2017-02-16 117 views
1

我想捕獲所有輸出到子進程打印輸出的變量。這裏是我的代碼:捕獲python3中子進程的所有輸出

#!/usr/bin/env python3 

import subprocess # Subprocess management 
import sys # System-specific parameters and functions 

try: 
    args = ["svn", "info", "/directory/that/does/not/exist"] 
    output = subprocess.check_output(args).decode("utf-8") 
except subprocess.CalledProcessError as e: 
    error = "CalledProcessError: %s" % str(e) 
except: 
    error = "except: %s" % str(sys.exc_info()[1]) 
else: 
    pass 

這個腳本仍然打印到終端這樣的:

的svn:E155007: '/目錄/ /沒有/沒有/存在' 是不是工作拷貝

我怎樣才能捕捉到一個變量?

回答

1

check_output只捕獲標準輸出和標準錯誤NOT(根據https://docs.python.org/3.6/library/subprocess.html#subprocess.check_output

爲了捕獲標準錯誤,你應該使用

>>> subprocess.check_output(
...  "ls non_existent_file; exit 0", 
...  stderr=subprocess.STDOUT, ...) 

我建議,要求在這裏順便說一下之前閱讀文檔。

+0

這工作,謝謝。我沒有檢查手冊和幾篇關於這方面的文章,但我仍然沒有得到它自己的工作。 – mursuhaukka

+0

現在工作嗎? – Sekuraz

+0

是的,謝謝你,Sekuraz。 – mursuhaukka