import os
import sys
a = os.listdir("C:\\Python27\\forms2")
i = 0
big_file = open("c:\\Python27\\forms2\\%s" %a[i], 'r')
small_file3 = open("c:\\Python27\\forms3\\%s" %a[i], 'w')
linez = big_file.read()
for line in linez:
if 'TextControl' in linez:
small_file3.write(line)
if 'http://' in linez:
small_file3.write(line)
i = i + 1
big_file.close()
small_file3.close()
输出为
Traceback (most recent call last):
File "C:\Python27\testreadwrite", line 13, in <module>
small_file3.write(line)
ValueError: I/O operation on closed file
“testreadwrite”是脚本的名称。为什么要在应该注入“a”列表变量的地方注入?你知道吗
您正在
for
循环结束时关闭文件您应该在
for
循环之后关闭文件您可以使用context manager来避免将来出现此类问题:
所以你不必自己打电话给
close
。你知道吗您正在对循环中的文件描述符调用close(),循环中的文件描述符为零 理智。您可能希望在循环之外/之后关闭文件描述符。你知道吗
错误消息:
告诉您问题所在,您正在尝试对关闭的文件执行IO操作,在本例中,写入关闭的文件。你知道吗
问题是,您正在关闭循环中的输出文件(
"small_file3"
),您可能希望在前面提到的循环之后关闭它。你知道吗您可以在
for
循环之前关闭输入("big_file"
)文件,然后在for
循环之后关闭输出文件。你知道吗还可以考虑使用^{} 构建打开文件的路径。你知道吗
相关问题 更多 >
编程相关推荐