【问题标题】:Inside python code, how do I run a .sh script?在 python 代码中,如何运行 .sh 脚本?
【发布时间】:2011-01-28 09:36:22
【问题描述】:

它会在运行后继续代码吗?还是会在脚本完成之前停在该行?

【问题讨论】:

    标签: python bash shell


    【解决方案1】:
    import os
    os.system('./script.sh')
    

    python 脚本在 sh 完成之前不会停止

    【讨论】:

    • “子进程模块提供了更强大的工具来生成新进程并检索它们的结果;使用该模块比使用此功能更可取。” - 例如,使用 subprocess.call() 将不会执行 shell 来运行您运行的任何内容,因此如果您将任何动态生成的参数传递给您的程序,您就不必处理参数注入。
    • 您也可以建议 subprocess.Popen -- 这可以让您控制执行、等待、终止等。但实践表明 os.system 通常提供您需要的所有功能。
    • subprocess.call 也提供了简单/简单的 API ;)
    【解决方案2】:

    您可以使用os.systemsubprocess.Popensubprocess.call,但在使用子流程方法时请确保使用shell=True。在所有这些方法中通过系统调用执行它是阻塞的。 python脚本将完成,然后进入下一步。

    【讨论】:

    • 无需使用 shell=True.. 带有 shebang 行的 shellscripts(甚至使用脚本作为参数调用 shell)可以使用 exec() 风格的函数很好地执行。
    【解决方案3】:

    使用subprocess.call 是最简单的方法。在执行的程序终止之前它不会返回。如果您需要不同的行为,请查看subprocess module 的其他方法。

    【讨论】:

    最近更新 更多