2014-09-26 117 views
0

我運行一個簡單的Python腳本是這樣的:subprocess.check_output顯然沒有捕捉輸出

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() 
'' 

任何人能看到什麼migh不會出錯?

這是32位的Python 2.7在Windows 7

+0

嘗試:'ARGS = [sys.executable, '-c', '打印(\' 你好世界\ ')']'或'簡單ARGS = [sys.executable,'-c','print(「hello world」)']' - 都適用於我。 – jedwards 2014-09-26 12:12:36

回答

1

我認爲你必須這樣寫:

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

這裏是subprocess.check_output細節link

+0

就是這樣 - 答案太多了。這也適用 – 2014-09-26 12:14:38

+1

@SalimFadhley是的,無論哪種方式都不錯。 – 2014-09-26 12:20:49

0

太多引用,這個工程:

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