2017-08-04 21 views
2

私はコンソールにテキストを出力するpythonスクリプトを持っています。代わりにファイルにログを記録する必要がありますが、スクリプトはかなり複雑で、Pythonをコードしないので、変更しません。pythonスクリプトのcmd出力をファイルにリダイレクトする方法は?

私はこの

>python script.py arg1 arg2 ... argn > "somefile.txt" 

をしたいしかし、それは動作しませんし、私の推測では、Pythonは引数として>"somefile.txt"を取ること..です

は、この達成し、どのようにすることはできますか?あなたが出力を見ても、それをファイルに書き込みたい場合は

+1

あなたの推測は間違っています。どのようにして動作しませんか?あなたは何を見ますか? – immortal

+0

出力がコンソールに表示され、ファイルが作成されていません。 –

+0

どのようなシェルですか?そしてあなたのスクリプトは出力をどのように出力しますか? – immortal

答えて

3

$ (python script.py one two) > test.txt

または:これはまだファイルに書き込みをされていない場合

$ python script.py one two | tee test.txt

STDERRをリダイレクトしてみてください。

$ python script.py one two 2>&1 | tee test.txt

+1

大括弧で試してみると、ファイルは作成されますが、出力はリダイレクトされず、ファイルは空のままです。申し訳ありませんが、私はあなたの残りの構文を理解していません。 'によって'あなたはLinuxのbashを暗示するのですか?私はWindowsのコマンドプロンプトについて話しているので、 –

+0

"tee"が内部または外部コマンドとして認識されない... " –

+0

@GarinGG、Windowsは' tee'コマンドで配布されていません。あなたはそれをインストールすることができますが、とにかくそれについて尋ねなかったのです。 '> somefile.txt'でstdoutをリダイレクトし、' 2>&1'を使ってstderrをstdout(つまり同じファイル)にリダイレクトします。 – eryksun

0

これらのコード行をbe pythonファイルのginning。

import sys 
sys.stdout = open('somefile.txt', 'w') 

これは、sys.stdoutを任意のファイルオブジェクトに設定しています。

関連する問題