用Python写一个csv文件:函数writerow出错

时间:2017-01-09 22:41:51

标签: python python-3.x csv

尝试将列表列表保存到csv文件中,我使用了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'

任何人都知道缺少什么?

1 个答案:

答案 0 :(得分:5)

您以二进制模式打开文件,但b对象发送字符串。

通过删除newline=''以文本模式打开文件。还建议您设置with open("output.csv", "w", newline='') as f:

newline=''

请参阅csv module footnote

  

如果未指定\r\n,则无法正确解释引用字段中嵌入的换行符,并且在写入时使用\r换行符的平台上将添加额外的newline=''。指定csv应始终是安全的,因为newline模块执行自己的(通用)换行处理。

在Python 2中,出于同样的原因,建议以二进制模式打开文件,但Python 3中的I / O层使用let request = UNNotificationRequest(identifier: id + String(describing: components.weekday), content: content, trigger: trigger) 选项处理得更好。