【问题标题】:How to run commands on shell through python [duplicate]如何通过python在shell上运行命令[重复]
【发布时间】:2013-01-05 15:16:03
【问题描述】:

可能重复:
Calling an external command in Python

我想使用 python 在另一个目录中运行命令。

用于此的各种方法是什么?哪种方法最有效?

我想做的如下,

cd dir1
execute some commands
return 
cd dir2
execute some commands

【问题讨论】:

标签: python subprocess


【解决方案1】:

如果你只想通过 python 在 shell 上运行一个(简单的)命令,你可以通过 os 模块的 system 函数来完成。例如:

import os
os.system('touch myfile')

如果您想要更复杂的东西来更好地控制命令的执行,请继续使用此处其他人建议的 subprocess 模块。

如需更多信息,请点击以下链接:

【讨论】:

    【解决方案2】:

    您可以使用Python Subprocess,它提供了许多模块来执行命令、检查输出和接收错误消息等。

    【讨论】:

      【解决方案3】:

      如果您想对调用的 shell 命令进行更多控制(即访问标准输入和/或标准输出管道或异步启动它),您可以使用subprocessmodule:

      import subprocess
      
      p = subprocess.Popen('ls -al', shell=True, stdout=subprocess.PIPE)
      stdout, stderr = p.communicate()
      

      另见subprocess module documentation

      【讨论】:

        【解决方案4】:
        os.system("/dir/to/executeble/COMMAND")
        

        例如

        os.system("/usr/bin/ping www.google.com")
        

        如果 ping 程序位于“/usr/bin”

        自然需要导入os模块。

        os.system 不等待任何输出,如果你想输出,你应该使用

        subprocess.call 或类似的东西

        【讨论】:

        • 有人告诉我我们有 subprocess.call , os.system...哪个有用??
        • 取决于您的需要。如果您只想在后面的 shell 中启动某些东西,请使用 os.system。如果您想等待进程的结果,请使用 subprocess.call 或类似的东西.. subprocess.Popen 的工作方式与 c 中的 popen 非常相似
        最近更新 更多