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
我正在将以下 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