Python3 CSV writerows,TypeError:'str'不支持缓冲区接口

时间:2016-01-30 09:51:32

标签: python python-3.x csv typeerror kaggle

我正在将以下Kaggle代码翻译成Python3.4:

在输出CSV文件的最后一行中,

predictions_file = open("myfirstforest.csv", "wb")
open_file_object = csv.writer(predictions_file)
open_file_object.writerow(["PassengerId","Survived"])
open_file_object.writerows(zip(ids, output))
predictions_file.close()
print('Done.')

存在类型错误

TypeError: 'str' does not support the buffer interface

发生在open_file_object.writerow(["PassengerId","Survived"])行。

我认为这是因为以二进制模式打开文件以编写csv数据在Python 3中不起作用。但是,在encoding='utf8'行中添加open()也不起作用。

在Python3.4中执行此操作的标准方法是什么?

1 个答案:

答案 0 :(得分:12)

在Python 2和Python 3之间创建CSV文件是不同的(查看csv module所显示的文档):

而不是

predictions_file = open("myfirstforest.csv", "wb")

你需要使用

predictions_file = open("myfirstforest.csv", "w", newline="")

(如果发生错误,您应该使用上下文管理器为您处理文件的关闭):

with open("myfirstforest.csv", "w", newline="") as predictions_file:
    # do stuff
# No need to close the file