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

举报
hacker707 发表于 2022/03/24 12:54:50 2022/03/24
【摘要】 ✅作者简介:大家好我是hacker707,大家可以叫我hacker📃个人主页:hacker707的csdn博客🔥系列专栏:hacker的错误集💖如果觉得博主的文章还不错的话,请👍三连支持一下博主哦🤞@TOC 报错内容报错代码:import csvperson = [('xxx', 18, 180), ('yyy', 18, 182), ('zzz', 19, 185)]# 表头he...

✅作者简介:大家好我是hacker707,大家可以叫我hacker
📃个人主页:hacker707的csdn博客
🔥系列专栏:hacker的错误集
💖如果觉得博主的文章还不错的话,请👍三连支持一下博主哦🤞

@TOC

报错内容

报错代码:

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)

完美解决🥳🥳🥳

这篇文章参加了csdn的活动,还请大家多多三连支持一下博主,你们的支持就是我创作的动力💖

在这里插入图片描述
CSDN社区 《创作达人》活动,只要参与其中并创作文章就有机会获得官方奖品:精品日历、新程序员杂志,快来参与吧!链接直达 https://bbs.csdn.net/topics/605272551

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。