:レガシー2.xのはPythonのバージョンとの互換性のため、
$ python >/dev/null -c 'import subprocess,sys;subprocess.call(["ls", "/404"],
stderr=sys.stdout.buffer)'
をまたは:
は、標準出力ファイルを渡す代わりに
subprocess.STDOUT
、問題を解決するために、
正確にドキュメントに記載されているもの:stderrをstdoutにリダイレクトします。
proc = subprocess.Popen(self.task["command"], shell=False, bufsize=1, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output = ""
while (True):
# Read line from stdout, break if EOF reached, append line to output
line = proc.stdout.readline()
line = line.decode()
if (line == ""): break
output += line
出力には、stdoutとstderrの両方からのプロセス出力が含まれます。
stderr=subprocess.STDOUT
すべてのstderr出力を直接呼び出しプロセスのstdoutにリダイレクトします。これは大きな違いです。
ところで、それはpython 3.5で修正されました。 – max