0

画面出力を単一のファイルにリダイレクトすることについて質問を受けました。画面出力を印刷するコードは次のとおりです。

for O,x,y,z,M,n in coordinate:
    print(O,x,y,z,M,n)

画面出力は次のようになります。

O 0 0 0 ! 1
O 1 0 0 ! 2 
O 2 0 0 ! 3

では、画面出力のように、すべてのデータを単一のファイルに同じ形式でリダイレクトするにはどうすればよいでしょうか。画面出力が完了するのを待つよりも、すべてのデータを取得する方がはるかに高速になるためです。試してみfor point in coordinate: file.write(' '.join(str(s) for s in point))ましたが、出力ファイルは次のようになりました:

O 0 0 0 ! 0O 1 0 0 ! 1O 2 0 0 ! 2O 3 0 0 ! 3O 4 0 0 ! 4O 5 0 0 ! 5O 6 0 0 ! 6O
4

2 に答える 2

0

コンソール出力をファイルにリダイレクトするだけです $python yourscript.py > output.txt

コードの変更は必要ありません。

于 2013-09-17T02:43:56.640 に答える
0

この関数には、書き込み先のファイル オブジェクトを指定printするキーワードのみのパラメーターがあります。fileそれが最も簡単な方法です:

for O,x,y,z,M,n in coordinate:
    print(O,x,y,z,M,n,file=output_file)

コードが機能しなかった理由writeは、各エントリの最後に改行文字を入れていなかったためです。それを修正することもできます:

file.write(' '.join(str(s) for s in point) + '\n')
于 2013-09-17T02:45:39.470 に答える