【hacker的错误集】ValueError: I/O operation on closed file

简介: ValueError: I/O operation on closed file.依旧是使用单词意思来分析报错原因

78c5e154928c4d0bb6a0cd1fcc5664ff.jpg


报错内容



报错代码:


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)

7daf42dae7c244c69dfc55c3819e5f99.png


报错分析



ValueError: I/O operation on closed file.依旧是使用单词意思来分析报错原因

ValueError值错误

closed file关闭的文件


通过分析可以得出:with open处理了已经被关闭的数据。使用with open打开文件,如果语句在with open之外是无效的,因为文件已经被关闭了

居然:那应该怎么解决呢

hacker:👀👀👀


解决方案



其实解决方法很简单,只需要将你要处理的数据都加到with open里,改一下代码缩进即可完美解决


image.png


改进后的代码:


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的支持💖💖💖


目录
相关文章
|
Java
Invalid or corrupt jarfile坑爹问题解决
打包一个可以直接利用java -jar ***就可以运行的jar包步骤:jar cvfm lottery.jar MANIFEST.MF jdbc.properties com如果出现:java.io.
36216 0
|
9月前
openmv出现File corrupted,out of memery,invalid syntax等其他问题解决方法
openmv出现File corrupted,out of memery,invalid syntax等其他问题解决方法
74 0
|
10月前
|
弹性计算 关系型数据库 MySQL
数据库表损坏解决方法( is marked as crashed and should be repaired)
表损坏原因过程大致如下,过了个国庆没有查看服务器状态,7号晚上手机收到ECS服务器异常短信,查了下发现是磁盘满了,导致无法创建临时空间,造成商城无法访问,速速的解决方法是删除了大量日志文件,访问网站发现已经ok了,一切正常,今天客户忽然打电话说,网站的搜索功能出现问题,我查了下错误原因
233 0
|
12月前
|
机器学习/深度学习 数据采集
ValueError: Found input variables with inconsistent numbers of samples: [140, 1120] 怎么解决?
这个错误通常发生在机器学习模型的训练中,它表示输入数据的样本数量不一致。在你的情况下,你的输入数据中有两个变量,一个变量的样本数量为140,另一个变量的样本数量为1120,因此这个错误就出现了。 为了解决这个问题,你需要确保所有输入变量的样本数量是相同的。你可以通过以下几种方式来解决这个问题: 检查数据:检查数据是否正确加载,可能会导致数据样本数量不一致。 数据清洗:检查是否有重复的样本或者缺失的样本,如果有则需要对数据进行清洗。 数据对齐:如果你使用了多个数据源,那么你需要对它们进行对齐以确保它们的样本数量一致。 数据重采样:如果数据中有不均衡的样本数量,你可以考虑使用数据重采样方
634 0
PowerDesigner在生成SQL时报错Generation aborted due to errors detected during the verification of the mod
PowerDesigner在生成SQL时报错Generation aborted due to errors detected during the verification of the mod
358 0
PowerDesigner在生成SQL时报错Generation aborted due to errors detected during the verification of the mod
|
SQL 算法 小程序
【hacker的错误集】IndentationError: expected an indented block
以猜数字的小程序为例做解答,遇到这种问题该如何解决
153 0
【hacker的错误集】IndentationError: expected an indented block
|
数据采集 Python
【hacker的错误集】DeprecationWarning: find_element_by_* commands are deprecated.
DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead。依旧是使用单词意思分析报错原因
110 0
【hacker的错误集】DeprecationWarning: find_element_by_* commands are deprecated.
如何处理错误消息Unable to install breakpoint due to missing line number attributes
如何处理错误消息Unable to install breakpoint due to missing line number attributes
158 0
如何处理错误消息Unable to install breakpoint due to missing line number attributes
|
关系型数据库 MySQL Java
Connection is read-only. Queries leading to data modification are not allowed
看了下mysql-connector-5.1.40版本中,如果设置failoverReadOnly=true (即默认值,参考链接),当mysql连接failover时,会根据jdbc连接串将当前连接的readOnly值设置为true (第8行代码) 1 2 3 4 ...
3355 0