- ベストアンサー
Pythonプログラミングでファイルに結果を出力する方法
- Pythonのプログラミングでファイルに結果を出力する方法について説明します。
- プログラムを実行した際に、ファイルに出力される結果が予想と異なる場合、原因と解決方法について解説します。
- 特に、指定したファイルに全ての結果が正しく出力されない場合の対処法を説明します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
どうやって確認しましたか? writeはprintと違って改行や空白が入らずに出力されます。 手許のだと test.dat 2.02.0 (最後に改行無し) ab.dat -6.91202300543-5.91202300543 (最後に改行無し) となります。 前半の 2.0 -6.91202300543 が1 2、 後半の2.0 -5.91202300543 が1 3の計算結果です。 これは、プログラムに書かれた通りに実行されている「正しい動作」です。 あと、ここのQAでは空白がまとめられる、というPythonにとっては致命的な特徴があるの、まとめられない別の文字(全角空白など)に置き換えて書くようにしてください。インデントが変わると、ブロック構成に間違いがあってもわからないくなります。
その他の回答 (1)
- paraspor
- ベストアンサー率26% (4/15)
このプログラムをそのまま実行すると以下のようになりますが、 ////ab.dat//// -6.91202300543-5.91202300543 ////test.dat//// 2.02.0 outfp.write(str(s) + "\n") outfq.write(str(u) + "\n") と変更すると、 ////ab.dat//// -6.91202300543 -5.91202300543 ////test.dat//// 2.0 2.0 求める結果はこういうことでしょうか?
補足
#!/usr/bin/env python #vim: fileencoding=utf-8 from math import* import sys outfp=open('test.dat','w') outfq=open('ab.dat','w') for line in open('para.dat','r'): あああitems=line.split('\t') s=2/float(items[0]) u=float(items[1])-5+log(s/100) outfp.write(str(s)) outfq.write(str(u)) outfp.close() outfq.close() 上の補足を間違えてしまいました。こちらで、確認してください。 ////para.dat//// 1 2 1 3
お礼
すみません。インデントをうまくとるとできました。ありがとうございました。
補足
#!/usr/bin/env python #vim: fileencoding=utf-8 from math import* import sys outfp=open('test.dat','w') outfq=open('ab.dat','w') for line in open('para.dat','r'): items=line.split('\t') s=2/float(items[0]) u=float(items[1])-5+log(s/100) outfp.write(str(s)) outfq.write(str(u)) outfp.close() outfq.close() ////para.dat//// 1 2 1 3 すみません。インデントを施したものを示しました。また、確認は、ターミナルで vi ab.datで確認しました。 これだと、2列目の結果しか反映されません。おねがいします。