2017-05-22 2 views
0

毎回ファイル:追加のみ1行は、私が使用し

f = open("my_file.csv", "a") 
writer = csv.writer(f) 
writer.writerow(['one', 'two']) 

をしかし、その代わりに、最後の行の後に新しい行を追加するのが、それは2つの新しい行を追加します:空1、必要なものを「1 | 2 "その理由は何ですか?

+0

は再生できません。空の線がまだそこになかったと確信していますか?問題を再現できるようにするには、代表的なcsvファイルを追加してください。このコードを実行すると問題が発生します。 –

+0

はい。この関数を2回呼び出しても、必要な行の前に新しい空行が追加されます –

+1

これはすべてのコードですか?ファイルを書き込んだ後にファイルを閉じないでください。コードの後半でそれをさらに追加できますか? 'with'ステートメントを使って、ファイルを閉じたいときにファイルが正しく閉じられていることを確認することをお勧めします。 –

答えて

0

with open()を使用すると、csvファイルに書き込むときの方が簡単に見つかります。ドキュメントはhereです。マシン上で発生した問題を再現できますが、次のコードは新しい行が追加されるたびに空行を生成しません。

import csv 

with open('my_file.csv', 'a', newline='') as csvfile:  
    writer = csv.writer(csvfile, delimiter=',') 
    writer.writerow(['one', 'two']) 
+0

これは作家も閉じますか? –

+1

はい、このコードブロックを離れるとすぐに自動的に 'close()'メソッドが呼び出されます。 – DavidG

+0

@UFCインサイダー私はあなたが作家を閉じる必要はないと思う。ファイルはシステムリソースであるのに対して、オブジェクトは唯一のものです。ファイルが閉じられた後にライターを使用しようとした場合は、例外がスローされることを願っています。 –

関連する問題