首页 > 解决方案 > 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.

这可能是什么原因造成的?

标签: python

解决方案


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()

推荐阅读