subprocess.check_output显然没有捕获输出

时间:2014-09-26 11:57:44

标签: python windows

我正在运行这样一个简单的python脚本:

C:\workspace\MetaPackager\src\metapackager_tests\fake_project\src>c:\workspace\MetaPackager\Scripts\python.exe -c "print 'hello world'"
hello world

当我尝试从subprocess.check_poutput中运行完全相同的东西时,我什么都没得到:

C:\workspace\MetaPackager\src\metapackager_tests\fake_project\src>c:\workspace\MetaPackager\Scripts\python.exe
Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> import sys
>>> args = [sys.executable, '-c', '"print(\'hello world\')"']
>>> subprocess.check_output(args).strip()
''

这也会产生完全相同的失败:

subprocess.check_output(args, stderr=subprocess.STDOUT,).strip()
''

有人能看出可能出现的问题吗?

这是Windows 7上的32位Python 2.7。

2 个答案:

答案 0 :(得分:1)

我认为你必须这样写:

 subprocess.check_output(["python", "-c", "print 'hello'"])

以下是subprocess.check_output的详细信息link

答案 1 :(得分:0)

引用太多,这有效:

    subprocess.check_output([sys.executable, '-c', '__import__("sys").stdout.write(\'Hello\')'], stderr=subprocess.STDOUT)