Stu*_*Cat 28 python subprocess
所以我注意到subprocess.call在继续使用python脚本之前它等待命令完成,我无法获得stdout,除了subprocess.Popen.有任何替代函数调用会等到它完成吗?(我也试过Popen.wait)
注意:我试图避免 os.system通话
result = subprocess.Popen([commands...,
self.tmpfile.path()], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = result.communicate()
print out+"HIHIHI"
Run Code Online (Sandbox Code Playgroud)
我的输出:
HIHIHI
Run Code Online (Sandbox Code Playgroud)
注意:我试图wine用这个运行.
Ale*_*lex 73
我正在使用以下构造,尽管您可能想要避免shell=True.这为您提供了任何命令的输出和错误消息,以及错误代码:
process = subprocess.Popen(cmd, shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
# wait for the process to terminate
out, err = process.communicate()
errcode = process.returncode
Run Code Online (Sandbox Code Playgroud)
Kat*_*iel 19
subprocess.check_output(...)
Run Code Online (Sandbox Code Playgroud)
调用进程,如果其错误代码非零,则引发进程,否则返回其stdout.这只是一个快速的简写,所以你不必担心PIPEs和事情.
glg*_*lgl 14
如果你的进程提供了一个巨大的stdout而没有stderr,communicate()由于内存限制可能是错误的方法.
代替,
process = subprocess.Popen(cmd, shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
# wait for the process to terminate
for line in process.stdout: do_something(line)
errcode = process.returncode
Run Code Online (Sandbox Code Playgroud)
可能是要走的路.
process.stdout 是一个类似文件的对象,您可以将其视为任何其他此类对象,主要是:
read()从它readline()从它和后者就是我上面要做的,以便逐行获取其内容.
| 归档时间: |
|
| 查看次数: |
92933 次 |
| 最近记录: |