I持って、元のスクリプトから別のPythonスクリプトを実行するPythonスクリプトに次の行:subprocess.Popenは()がコンソールに出力通信しますが、ファイルログに記録しない
subprocess.Popen("'/MyExternalPythonScript.py' " + theArgumentToPassToPythonScript, shell=True).communicate()
上記の行を使用して別のPythonファイルにあるprint()
のステートメントは、メインのPythonスクリプトのコンソールに表示されます。
ただし、これらのステートメントは、がスクリプトが書き込むログに反映されていないです。
誰もがこれを修正する方法を知っているので、.txtファイルはメインのPythonスクリプトの実際のコンソールテキストを正確に反映していますか?
これは私がリアルタイムで、.txtファイルとしてコンソールを保存するために使用していますthe methodです:私は必ずしもこの方法に装着されていないのです
import sys
class Logger(object):
def __init__(self):
self.terminal = sys.stdout
self.log = open("/ScriptLog.txt", "w", 0)
def write(self, message):
self.terminal.write(message)
self.log.write(message)
sys.stdout = Logger()
。私は詳細を達成する方法に興味を持っています。
あなたは、すべての書き込みの後に 'self.log.flush()'することができます。基本的に、Pythonは、バッファに十分なデータがあるか、ファイルハンドルが閉じられる(たとえば、アプリケーションが停止したとき)まで、ファイルへの書き込みを待機します。 –
'self.log.write(message)'の後に 'self.log.flush()'を挿入しようとしました。これを行っても何も変わりませんでした。 .txtファイルにはまだ外部スクリプトの 'print'テキストは含まれていません。 – Crickets
お待ちください、このスクリプトはかなり危険です。さらに、あなたのプログラムは引数を全く印刷しません。だから私はこれが引数を出力するのはシェルそのものだと思います。 –