调用 subprocess.Popen 得到的结果有点奇怪,我怀疑这与我是 Python 新手有很大关系。
args = [ 'cscript', '%USERPROFILE%\\tools\\jslint.js','%USERPROFILE%\\tools\\jslint.js' ]
p = Popen(args, stdout=PIPE, shell=True).communicate()[0]
结果如下所示(尾随双\r\n 以防它很重要)
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.\r\n\r\n
如果我从交互式 Python shell 运行该命令,它看起来像这样
>>> args = ['cscript', '%USERPROFILE%\\tools\\jslint.js', '%USERPROFILE%\\tools\jslint.js']
>>> p = subprocess.Popen(args, stdout=subprocess.PIPE, shell=True).communicate()[0]
Lint at line 5631 character 17: Unexpected /*member 'OpenTextFile'.
f = fso.OpenTextFile(WScript.Arguments(0), 1),
...
Lint at line 5649 character 17: Unexpected /*member 'Quit'.
WScript.Quit(1);
所以这就是我真正关心的所有输出,但是如果我转储我刚刚设置的“p”变量的值...
>>> p
'Microsoft (R) Windows Script Host Version 5.8\r\nCopyright (C) Microsoft Corpor
ation. All rights reserved.\r\n\r\n'
>>>
我想要的所有数据最终去了哪里?它绝对没有以“p”结尾。看起来它会输出到标准输出,但我没有明确告诉它不要那样做吗?
我在使用 Python 2.6.6 的 Windows 7 x64 上运行它
最佳答案
它会变成 stderr 吗?尝试重定向:
p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True).communicate()[0]
关于python - 从 subprocess.Popen 获取整个输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3947191/