报错内容
报错代码:
import csv person = [('xxx', 18, 180), ('yyy', 18, 182), ('zzz', 19, 185)] # 表头 header = ['name', 'age', 'height'] with open('person.csv', 'w', encoding='utf-8-sig') as file_obj: # 1:创建writer对象 writer = csv.writer(file_obj) # 2:写表头 writer.writerow(header) # 3:遍历列表,将每一行的数据写入csv for p in person: writer.writerow(p)
报错分析
ValueError: I/O operation on closed file.依旧是使用单词意思来分析报错原因
ValueError值错误
closed file关闭的文件
通过分析可以得出:with open处理了已经被关闭的数据。使用with open打开文件,如果语句在with open之外是无效的,因为文件已经被关闭了
居然:那应该怎么解决呢
hacker:👀👀👀
解决方案
其实解决方法很简单,只需要将你要处理的数据都加到with open里,改一下代码缩进即可完美解决
改进后的代码:
import csv person = [('xxx', 18, 180), ('yyy', 18, 182), ('zzz', 19, 185)] # 表头 header = ['name', 'age', 'height'] with open('person.csv', 'w', encoding='utf-8-sig') as file_obj: # 1:创建writer对象 writer = csv.writer(file_obj) # 2:写表头 writer.writerow(header) # 3:遍历列表,将每一行的数据写入csv for p in person: writer.writerow(p)
完美解决🥳🥳🥳
结束语🏆🏆🏆
会持续更新专栏《hacker的错误集》相关知识,如果有改进的建议欢迎在评论区留言奥~
感谢大家对hacker的支持💖💖💖