2017-02-16 10 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はあなたが、私は前の方法で、ここで尋ねるにドキュメントを読んでお勧めします

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

を使用する必要があります標準エラー出力をキャプチャするためにstdoutとしない標準エラー出力(https://docs.python.org/3.6/library/subprocess.html#subprocess.check_outputによる)

をキャプチャします。

+0

これは機能します、ありがとうございます。私はこのマニュアルといくつかの記事をチェックしましたが、私はまだそれを自分で動作させることはできませんでした。 – mursuhaukka

+0

今すぐ使えますか? – Sekuraz

+0

はい、ありがとう、Sekuraz。 – mursuhaukka

関連する問題