Answers:
重定向有两种方法。两者都适用于subprocess.Popen
或subprocess.call
。
设置关键字参数shell = True
或executable = /path/to/the/shell
并在那里指定命令。
由于您只是将输出重定向到文件,因此请设置关键字参数
stdout = an_open_writeable_file_object
对象指向output
文件的位置。
subprocess.Popen
比subprocess.call
。
Popen
不会阻塞,允许您在进程运行时与之进行交互,或者继续进行Python程序中的其他操作。调用Popen
返回一个Popen
对象。
call
会阻止。它支持与Popen
构造函数相同的所有参数,因此您仍可以设置进程的输出,环境变量等,脚本将等待程序完成,并call
返回表示进程退出状态的代码。
returncode = call(*args, **kwargs)
与通话基本相同
returncode = Popen(*args, **kwargs).wait()
call
只是一种便利功能。它在CPython的实现是在subprocess.py:
def call(*popenargs, timeout=None, **kwargs):
"""Run command with arguments. Wait for command to complete or
timeout, then return the returncode attribute.
The arguments are the same as for the Popen constructor. Example:
retcode = call(["ls", "-l"])
"""
with Popen(*popenargs, **kwargs) as p:
try:
return p.wait(timeout=timeout)
except:
p.kill()
p.wait()
raise
如您所见,它周围是薄薄的包装纸Popen
。
call()
似乎非常清楚。您能否提供报价或链接,以便我们知道答案中的重点?