通过Python在Shell上运行命令的方法

23

可能是重复问题:
在Python中调用外部命令

我想要使用Python在另一个目录下运行命令。

有哪些常用的方法可以实现这个需求,哪一种是最高效的?

我想要做的是:

cd dir1
execute some commands
return 
cd dir2
execute some commands

1
请参考 https://dev59.com/SnVD5IYBdhLWcg3wGXlI,该主题已经得到广泛讨论。 - Sudhi Pulla
你尝试过什么吗?做了任何研究吗? - Mike
4个回答

8

os.system() 将在 /bin/sh 中运行。如果您的命令(脚本)需要 bash,则无法正常工作。 - Ben L

4

如果你想更加控制被调用的shell命令(例如访问标准输入和/或输出管道或以异步方式启动它),你可以使用subprocess模块:

import subprocess

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

另请参阅subprocess模块文档

1
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... 哪一个更有用? - mrutyunjay
根据您的需求而定。如果您只想在后台中启动一些东西,请使用os.system。如果您想等待进程的结果,请使用subprocess.call或类似的内容。subprocess.Popen与C中的popen非常相似。 - Gjordis

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接