サブプロセスを呼び出していますが、サブプロセスの出力を既に開いているファイルに書き出したいとします。私は私のプログラムに.EXEからのリアルタイム出力を得るようSubprocess stdout to file、新しい行がありません
f1=open('solve.out','w')
#beginning of the programm writes to this file
f_err = open('mor.err', "w")
arguments=[file.exe,arg1,arg2,...]
p=subprocess.Popen(arguments,stdout=f1, stderr=f_err)
p.wait()
f1.close()
f_err.close()
これは正常に動作します:私は、次のコードを使用しています。ただし、出力はすべて1行に書き込まれます。スタンドアローンでは、出力に新しい行が表示されます。
私は成功せずuniversal_newlinesまたはp.communicateを()しようとしました。
編集1:windows10 Pythonのバージョン2.7.13
あなたがファイルをチェックしようとしていますヘキサエディタ?どの文字が行末にあるのかを確認します。実行中のOSとPythonのバージョンを説明するために[編集]できますか? –
Windows以外のエディタ(Scite、notepad ++、...)を使用して、stdout/stderrから作成されたファイルを開きます。 Windowsは '\ n \ r'を行末として認識しますが、Pythonは' \ n'を書きます。 –
@ Jean-FrançoisFabre私は行がインデントされると期待しています。「20 20 20 20 20 20」という6つのスペースがあります(メモ帳++の16進エディタプラグインをインストールしました) – Maud