关于子进程:如何通过python在shell上运行命令

How to run commands on shell through python

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Calling an external command in Python

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

有哪些不同的方法可以用来解决这个问题,哪种方法最有效?

我想做的是:

1
2
3
4
5
cd dir1
execute some commands
return
cd dir2
execute some commands


当然,如果您只想通过python在shell上运行一个(简单的)命令,那么可以通过os模块的system函数来执行。例如:

1
2
import os
os.system('touch myfile')

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

有关更多信息,请访问以下链接:

  • 关于os.system()的python官方文档
  • subprocess模块上的python官方文档

如果您想要更多地控制被调用的shell命令(即访问stdin和/或stdout管道或异步启动它),可以使用subprocess模块:

1
2
3
4
import subprocess

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

另见subprocess模块文档。


1
os.system("/dir/to/executeble/COMMAND")

例如

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

如果ping程序位于"/usr/bin"

当然,您需要导入操作系统模块。

os.system不等待任何输出,如果需要输出,应使用

subprocess.call或类似的东西


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