2017-10-26 25 views
-1

私はPythonを初めて使いました。私は熱伝達のFeniCS FEAモデルを書くために使っています。しかし、私は、forループからテキストファイルに変換された何千もの行を書くことを除いて、私がしたいことをするコードを書くことができました。Pythonのテキストファイルへのループ出力の書き込み

ループが実行されるたびに画面に出力しますが、このサイトではテキストファイルへの書き込みに関して数十の回答を試みましたが、すべて失敗しました。ここ がループ

for t in numpy.arange(0, t_end, Dt): 
    print 'Time ', t, 'Max_temp ', "%.3E " % T.vector().array().max() 

    line_n = int(abs(t/line_time)) 
    hatch = 0.0002 

    if (line_n % 2) == 0 
     f.xx = (0.001 + vel*t - (length*line_n - mis)) 

    else: 
     f.xx = (0.019 - vel*t + (length*line_n - mis)) 
     f.yy = 0.001 + line_n * hatch 

    solve(A, T.vector(), b, 'cg') 
    print 'Line#', t, 
    timestep += 1 
    T0.assign(T) 

のために含まれているコードの抜粋である今私が代わりに画面にいることを書くのファイルをテキストにそこまでの2つのprint文の出力を書きたいです。

P.S.むしろ追記演算子を使用し、そのファイル追記

$ python your_script.py > your_new_file.txt 

:私はLinuxマシン

+1

ファイルを開き、 'file.write()'を使用してください。 – Barmar

+0

あなたが試したことを見せてください。あなたのためにやっただけではなく、間違ったことを理解できるように助けてください。 – Barmar

+0

あまりにも開くときに書き込み能力を与えます。 open( "fileName"、 "w")。別の注意点として、テキストファイルではなくcsvに書き込む方がよいでしょう。これは、データの印刷方法に基づいています – FattySalami

答えて

3

最短ルートをファイルに出力を送信するために、シェルの標準出力のリダイレクト演算子(>)を使用することです使用します

$ python your_script.py >> your_appended_file.txt 

あなたは純粋なPythonのアプローチをしたい場合は、ファイルを開いて、.write()でそれに書き込む:

があることを起こる任意のファイルを上書きするよりも
with open('your_new_file.txt', 'w') as f: 
    for t in numpy.arange(0, t_end, Dt): 
     # attempting to faithfully recreate your print statement 
     # but consider using a single format string and .format 
     output = ' '.join(('Time ', t, 'Max_temp ', "%.3E " % T.vector().array().max()) 
     f.write(output) 
     ... 

(ここでは、ファイルを開くにはwithを使用します。手動でファイルを閉じるにはf.closeを使用します)。 withステートメントは、このような操作をより安全にし、負担を軽減します。ファイルを閉じるのを忘れないように、小さくても重要な詳細を覚えておいてください)

1

私は以下を試しました。ファイルはあなたのpythonフォルダディレクトリに作成されます。これを参照として使用し、要件に合わせて作成することができます。

f = open('workfile', 'w') 
for i in range(3): 
    f.write('This is a test\n') 
    intvalue =0 
    s = str(intvalue) 
    f.write(s) 

f.close()