Popenを使用して、stdoutとstderrをログファイルに継続的に書き込んでいるシェルスクリプトを呼び出しています。ログファイルを連続して(画面に)同時に出力する方法、またはシェルスクリプトにログファイルとstdoutの両方に同時に書き込む方法はありますか?
私は基本的にPythonで次のようなことをしたいと思っています:
cat file 2>&1 | tee -a logfile #"cat file" will be replaced with some script
繰り返しますが、これはstderr / stdoutを一緒にteeにパイプし、それをstdoutと私のログファイルの両方に書き込みます。
Pythonでstdoutとstderrをログファイルに書き込む方法を知っています。私が立ち往生しているのは、これらを画面に複製する方法です。
subprocess.Popen("cat file", shell=True, stdout=logfile, stderr=logfile)
もちろん、私はこのようなことをすることができますが、teeとシェルのファイル記述子のリダイレクトなしでこれを行う方法はありますか?:
subprocess.Popen("cat file 2>&1 | tee -a logfile", shell=True)