如何使用以下命令获取进程运行的输出subprocess.call()
?
通过一个StringIO.StringIO
反对stdout
给出这个错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py", line 444, in call
return Popen(*popenargs, **kwargs).wait()
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py", line 588, in __init__
errread, errwrite) = self._get_handles(stdin, stdout, stderr)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py", line 945, in _get_handles
c2pwrite = stdout.fileno()
AttributeError: StringIO instance has no attribute 'fileno'
>>>
如果你的Python版本>=2.7,你可以使用subprocess.check_output它基本上完全符合您的要求(它以字符串形式返回标准输出)。
简单例子(linux版本,见注释):
import subprocess
print subprocess.check_output(["ping", "-c", "1", "8.8.8.8"])
请注意,ping 命令使用 Linux 表示法(-c
用于计数)。如果您在 Windows 上尝试此操作,请记住将其更改为-n
以获得相同的结果。
正如下面的评论,您可以在中找到更详细的解释这个另一个答案.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)