我正在运行这样一个简单的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。
答案 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)