调用encode()写入CSV文件仍触发TypeError,寻求解决方法
问题分析与解决方案
错误原因
- 文件打开模式不当:你用
wb二进制模式打开文件,但Python 3的csv模块更适配文本模式处理;二进制模式下要求所有写入内容必须是字节对象,手动编码容易引发格式冲突。 - 语法错误:代码中
'utf-8)的引号未闭合,导致encode()方法调用失败,实际传入的仍是字符串而非字节对象,直接触发TypeError。
解决方案
推荐方案:文本模式打开并指定编码
这是Python 3处理CSV文件的标准方式,无需手动编码字符串,由csv模块自动处理编码和换行符:
import csv # 使用with语句自动管理文件生命周期,newline=''避免写入时生成额外空行 with open("countries_information.csv", 'w', encoding='utf-8', newline='') as file: writer = csv.writer(file) writer.writerow(['Country Name']) # 直接传入字符串即可完成写入
备选方案:二进制模式下修正代码(不推荐)
若坚持使用二进制模式,需先修复语法错误,确保所有写入元素为字节对象:
import csv file = open("countries_information.csv", 'wb') writer = csv.writer(file) # 修复引号错误,将字符串正确编码为字节 writer.writerow(['Country Name'.encode('utf-8')]) file.close()
内容的提问来源于stack exchange,提问作者hoo22xx
相关产品推荐
相关产品推荐

