python - ValueError:打开文件后对已关闭文件的 I/O 操作
问题描述
我有这个代码:
import os
csv_out = 'femaleconsolidated.csv'
csv_list = [r'C:\Users\PycharmProjects\filemerger\Female\outputA.csv',
r'C:\Users\PycharmProjects\filemerger\Female\outputB.csv',
r'C:\Users\PycharmProjects\filemerger\Female\outputC.csv',
r'C:\Users\PycharmProjects\filemerger\Female\outputD.csv',
r'C:\Users\PycharmProjects\filemerger\Female\outputE.csv',
r'C:\Users\PycharmProjects\filemerger\Female\outputother.csv']
print(csv_list)
csv_merge = open(csv_out, 'w')
for file in csv_list:
csv_in = open(file)
for line in csv_in:
csv_merge.write(line)
csv_in.close()
csv_merge.close()
print('Verify consolidated CSV file : ' + csv_out)
代码是合并 CSV。当然open(file)
应该打开文件,但我明白了:
csv_merge.write(line)
ValueError: I/O operation on closed file.
这可能是什么原因造成的?
解决方案
csv_merge.close()
这应该位于for
循环之外 - 因为您仍在csv_merge
下一次迭代中写入:
for file in csv_list:
csv_in = open(file)
for line in csv_in:
csv_merge.write(line)
csv_in.close()
csv_merge.close()
推荐阅读
- python - 将字符串列表转换为整数
- logging - 使用 logOnNext 使用 Reactor 记录 MDC
- google-sheets - 获取当前工作表中填写的最后一行值
- laravel - Laravel 雄辩的关系有很多关节
- javascript - 如何使用 React JS 以 BYTE ARRAY 格式将图像上传到 ASP.NET CORE WEB API,400 错误请求
- r - 如何排除 dplyr 范围内的值?
- angular - 将任何语言环境日期转换为 en-US 语言环境日期字符串
- php - symfony createForm 动态参数错误
- python - 将一个数据框的样式结果复制到另一个
- spring - 如何为 Spring Cloud Data Flow 仪表板添加基本用户登录屏幕?