2016-10-17 9 views
-1

私はファイルから読み込んだかなり簡単なpython(3.5.2)スクリプトを持っていて、その行が特定の基準を満たしていれば、その行を別のものにコピーします。元のファイルはこのようになります(これは1行、同じ形式が異なる数でより多くのフォロー、です):明らかな理由がないのにPythonが端末に書き込んでいますか?

2.9133 1 1 157.6578 170.4160 0.7081 3044.911 351.998 152.778 162.109 -1451.315

そして、私のスクリプトは次のようになります:

inp = open("original.dat", "r") 

out = open("new.log", "w") 

for line in inp: 

    if float(line.split()[5]) < 5.0: 

     out.write(line) 

プログラムはうまくいっています。希望の出力が得られます。しかし、Pythonのターミナルウィンドウから実行している間、私の端末は約80の整数(70-90のように)のように思われます。

私はこの望ましくない出力を引き起こす原因は何もわかりませんが、私の作業スペースは壊れてしまいます。あなたの中にはそれを修正するアイデアがあることを願っています。

+3

の出力に変数を設定することで、これを抑制することができますが、ありませんスクリプト。どのようにこのコードを実行しますか? – user2357112

+0

'out.write(line)'を端末から実行すると、書かれた文字数が得られます。値は一致します(1行では80文字が一般的です)。 –

答えて

1

このようなファイルで.writeを実行すると、これは正常な動作です。これは、ファイルに書き込まれたバイト数です。

>>> a = open("new.txt", 'w') 
>>> a.write("hello") 
5 

以内にあり、よりエレガントな解決策は、おそらくですが、あなたが対話的にこのコードを実行している場合、正常になりout.write

foo = out.write(line) 
+0

'with'はこれを変更しません。式ステートメントの値の出力は対話モードでは正常ですが、スクリプトでは正常ではありません。質問者は奇妙な方法でコードを実行する必要があります。 – user2357112

+0

ええ、私の答えを編集:S @ user2357112 – sytech

+0

うーん、私はこれを考えたことはないだろう。あなたの助けてくれてありがとう – Ezze

関連する問題