我如何获得使用运行的流程的输出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
为相同的结果。
如下所述,你可以在其他答案中找到更详细的说明。
问题内容: 当我使用python.exe运行它时,我有一些Python代码可以正常运行,但是如果使用pythonw.exe,则失败。 我收到的消息是: 但是,如果我未指定’stdout’参数,则subprocess.call()会开始正常。 我可以看到pythonw.exe可能正在重定向输出本身,但是我看不到为什么我被阻止为新线程指定stdout。 问题答案: 和handle无效,因为python
问题内容: (2013年) 我不知道为什么Python这么奇怪,您无法通过在Google中轻松搜索来找到它,但这很简单。 如何检测“ SPACE”或实际上的任何键?我怎样才能做到这一点: 这应该包含在python核心中,因此请不要链接与核心python不相关的模块。 问题答案: 您可以制作一个小Tkinter应用程序:
问题内容: 我正在尝试以下操作,并因错误而失败。我试图通过在控制台上调用python在Windows控制台上从Python shell /从脚本/运行它。似乎没有任何作用。总是相同的错误。 有谁知道这是怎么回事。!! ??? 即使是没有任何争论的简单事物,也会因相同的错误而失败。 我正在Windows 7机器上使用Python 2.72 32位版本。 问题答案: 添加到呼叫: 如您所见,它给出返回
问题内容: 我正在从另一个python脚本(A)调用python脚本(B)。 使用subprocess.call,如何将B的标准输出重定向到指定的文件? 我正在使用python 2.6.1。 问题答案: 将文件作为参数传递给:
问题内容: 我正在尝试创建一个程序,该程序扫描文本文件并将参数传递给子进程。一切正常,直到我得到路径中带有空格的目录。 我的split方法分解了参数,使它们跳越了空格: 可以,要么我需要函数来解析正确的参数,要么我将整个字符串传递给子进程而无需先对其进行分解。 不过我有点迷路了。 问题答案: 使用列表代替: 如果您的文件包含整个命令,而不仅仅是路径,那么您可以尝试shlex.split():
我正试图建立一个应用程序,用户将能够连接到我的应用程序,在twitter上输入关键字进行搜索,然后结果将被存储在数据库中。从用户输入关键词的那一刻起,我就想跟踪twitter上的内容。这些结果将被进一步分析,一些统计数据将呈现给用户。到目前为止,我已经使用tweppy和twitter流api来获取推文。但是我意识到我不能有一个以上的开放流连接(用于并行搜索多个关键字)。< br >我搜索了stac