3

私はいくつかの非常に単純なコードを持っています:

import csv
out = csv.writer(open('test.csv', 'wb'), delimiter=",")
out.writerow([u"value1", u"value2", u"value3"])

うまくいくこともありますが、ほとんどの場合うまくいきません!以前に writerow を使用したことを覚えていますが、問題なく動作していました。ここで何が欠けているのでしょうか?

問題をより明確にするために、上記のコードはエラーなしで実行されますが、csv ファイルは空のままです。

4

3 に答える 3

3

次のようにコードを変更しました。

import csv
f = open('test.csv', 'wb')
out = csv.writer(f, delimiter=",")
out.writerow([u"value1", u"value2", u"value3"])
f.close()

つまり、最後に使用できるように、を分離してopen('test.csv', 'wb')に割り当てるだけです。このように完全に機能します。ff.close()

于 2012-12-02T23:30:40.980 に答える
2

あなたがしていることを達成するためのもう少し Pythonic な方法は、次のステートメントで指定されるcontext managerを使用することです。with

In [1]: import csv

In [2]: with open('test.csv', 'wb') as f:
   ...:     writer = csv.writer(f)
   ...:     writer.writerow([u"value1", u"value2", u"value3"])

を使用するwithと、特に、コードがインデントされたブロックを終了するときにファイルが適切に閉じられることが保証されます。また、csvモジュールを使用する場合、デフォルトの区切り文字は,であるため、実際にはwriter(またはout、あなたの場合は ) 宣言から省略できます。

于 2012-12-02T23:43:45.607 に答える