Python3 CSV writerows, TypeError: 'str' does not support the buffer interface

Python3 CSV writerows, TypeError: 'str' does not support the buffer interface

我正在将以下 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"]).

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

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

创建 CSV 文件在 Python 2 和 Python 3 之间有所不同(查看 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