• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:python プログラミング vim)

Pythonプログラミングでファイルに結果を出力する方法

このQ&Aのポイント
  • Pythonのプログラミングでファイルに結果を出力する方法について説明します。
  • プログラムを実行した際に、ファイルに出力される結果が予想と異なる場合、原因と解決方法について解説します。
  • 特に、指定したファイルに全ての結果が正しく出力されない場合の対処法を説明します。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.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にとっては致命的な特徴があるの、まとめられない別の文字(全角空白など)に置き換えて書くようにしてください。インデントが変わると、ブロック構成に間違いがあってもわからないくなります。

leibniz1098
質問者

お礼

すみません。インデントをうまくとるとできました。ありがとうございました。

leibniz1098
質問者

補足

#!/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列目の結果しか反映されません。おねがいします。

その他の回答 (1)

  • paraspor
  • ベストアンサー率26% (4/15)
回答No.1

このプログラムをそのまま実行すると以下のようになりますが、 ////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 求める結果はこういうことでしょうか?

leibniz1098
質問者

補足

#!/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

関連するQ&A