2017-01-09 4 views
1

リストのリストをcsvファイルに保存しようとしましたが、私はcsvモジュールを使用しました。Pythonでcsvファイルを書く:関数の書き出しでエラーが発生する

import csv 
a = [[1.2,'abc',3],[1.2,'werew',4],[1.4,'qew',2]] 
with open("output.csv", "wb") as f: 
writer = csv.writer(f) 
writer.writerows(a) 

私はこのスクリプトを実行すると、エラーメッセージが表示されます:

Traceback (most recent call last): 
File "csv-ex.py", line 5, in <module> 
writer.writerows(a) 
TypeError: a bytes-like object is required, not 'str' 

誰もが欠落していることを知っているここに私のスクリプトはありますか?

答えて

5

ファイルをバイナリモードで開いたのに、csv.writer()オブジェクトが文字列を送信しました。

bを削除して、テキストモードでファイルを開きます。また、あなたがnewline=''を設定をお勧めします。

with open("output.csv", "w", newline='') as f: 

csv module footnoteを参照してください:

newline=''場合は、引用されたフィールド内に埋め込まれた改行が正しく解釈されません、指定された、との\r\n linendingsを使用するプラットフォーム上でされていません追加の書き込みは\rが追加されます。 csvモジュールは独自の(ユニバーサル)改行処理を行うので、常にnewline=''を指定することは安全です。 Pythonの2で

、それが同じ理由のために、バイナリモードでファイルを開くことをお勧めしますが、Pythonの3のI/O層は、より良いnewlineオプションを使用して、これを処理しました。

関連する問題