我试图从python脚本调用facebook/flow命令。它没有给出预期的result
。result
变量是(b'', None)
。你知道吗
p = subprocess.Popen(["/usr/local/bin/flow", "--help"], stdout=subprocess.PIPE)
result = p.communicate()
print(result)
我已经在我的macosxyosemite上安装了flow,并且可执行文件存在于使用过的目录中。我还安装了R
,当我使用下面的代码时,它会产生一个有效的输出( b'b'\nUsage: R [options] [< infile] [> outfile]\n', None)
。你知道吗
p = subprocess.Popen(["/usr/local/bin/R", "--help"], stdout=subprocess.PIPE)
result = p.communicate()
print(result)
为什么subprocess
不是只针对flow失败?我错过什么了吗?你知道吗
编辑
使用下面的代码生成预期的输出
p = subprocess.Popen(["/usr/local/bin/flow", "--help"], stderr=subprocess.PIPE)
result = p.communicate()
print(result)
对这种行为有什么解释吗?你知道吗
很可能,当你执行命令时-
进程正在将其输出写入
stderr
,而不是stdout
。因此,只有同时通过管道传输stderr输出时,才能获得输出。示例-这将在stdout和stderr中使用管道,然后您可以使用所需的输出。你知道吗
Popen.communicate()
返回格式为(stdout, stderr)
的元组,因此元组中的第二个元素将包含所需的数据。你知道吗相关问题 更多 >
编程相关推荐