subprocess call
时间: 2024-12-27 21:22:02 浏览: 13
使用 subprocess.call
方法
在 Python 中,subprocess.call
是一种简单的方法来启动一个新的进程并等待其完成。此方法返回子进程退出时的状态码。
基本语法
函数接受一个参数列表作为第一个参数,并可以选择接收关键字参数如 shell
, stdout
, stderr
等等[^2]。
import subprocess
return_code = subprocess.call(['echo', 'Hello World'])
print(f"The command returned {return_code}")
上述例子展示了最简单的调用方式——传递命令及其参数组成的列表给 call()
函数。这里指定的是 echo Hello World
这条命令,在 Unix/Linux/MacOS 下会打印字符串到标准输出;而该命令成功执行后的状态码通常是 0 表明一切正常[^3]。
当希望在一个 shell 中运行更复杂的命令串时,则可以设置 shell=True
参数:
return_code = subprocess.call('echo $HOME', shell=True)
需要注意的是,如果启用了 shell=True
并且传入了序列类型的 arg(即 list 或 tuple),那么这些 args 将被连接成单个字符串再交给 shell 解析。因此通常情况下建议只对单一字符串形式的命令启用这个选项[^4]。
对于那些想要捕获子程序的标准输出或错误流的情况来说,可以通过设定相应的管道属性实现这一点。比如下面的例子就收集到了 ls 的输出结果而不是直接显示出来:
output = subprocess.check_output(['ls'], universal_newlines=True)
print(output)
请注意上面使用了 check_output
而不是 call
来获取输出内容。虽然两者都可以用来创建新进程,但是前者专门用于读取外部命令的结果而不关心它的终止状态[^5]。
相关推荐


















