我正在将以下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中执行此操作的标准方法是什么?
答案 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