4

私はPython3でいくつかの本当に単純なコードをテストしています。何らかの理由で、次のコードは行を書く代わりに空の出力を生成します

import csv

output = open('hello world.csv', 'w',newline='')
wr = csv.writer(output, quoting=csv.QUOTE_ALL)

wr.writerow('hello world')

インタプリタでコマンドを試してみると、 .writerow()数値が返されます。次の例は、ドキュメントページで使用されている例です。

>> import csv
>>> spamWriter = csv.writer(open('eggs.csv', 'w', newline=''), delimiter=' ',
... quotechar='|', quoting=csv.QUOTE_MINIMAL)
>>> spamWriter.writerow(['Spam'] * 5 + ['Baked Beans'])
40
>>> spamWriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
37
4

1 に答える 1

8

writeroweggs.csv実際には行を書き込みますが、ファイルのバッファリングのために表示されません。ファイル内の何かを表示するには、ファイルを閉じるか、.flush()メソッドを呼び出します。-statementを使用するwithと、エラーが発生してもファイルは自動的に閉じられます。

文書化されていません (バグを報告しますか? ) が、この場合、メソッドwriterowの結果、fileobj.write()つまりファイルに書き込まれた文字数を返します。

行を形成する一連のフィールドをwriterowメソッドに渡す必要があります。

writer.writerow(['field 1', 'field 2', 'etc'])

リストの代わりに文字列を渡すと、文字列は、各フィールドが個々の文字である一連のフィールドとして解釈されます。

#XXX this is probably not what you want, don't do it
writer.writerow('abc')
# -> a,b,c
于 2012-10-07T18:14:37.390 に答える