关闭文件时的I/O操作错误

0 投票
1 回答
1123 浏览
提问于 2025-04-18 10:17

我正在写一个程序,用来读取文件,使用的是open()这个函数。当我尝试运行程序时,出现了一个错误:ValueError: I/O operation on closed file(在第18行)。

我在网上看到的关于这个问题的每个提问,问题总是和缩进有关。也就是说,试图在一个没有在同一个循环中打开的文件上进行操作。我对Python有点生疏了,但我觉得我的缩进看起来没问题。

我希望有人能帮我快速看一下,告诉我缩进是否有问题,或者是不是还有其他原因导致这个错误?以下是代码(错误部分已注释):

sourceFile = 'test.html'
serviceTarget = "Plumbers & HVAC Experts"
cityTarget = "NJ"

services = {"Plumbers", "Air Conditioning Experts", "Drain Cleaning Experts"}
cities = {"Westfield", "Scotch Plains", "Clark"}

serviceNames = {"Plumbers":"plumbers", "Air Conditioning Experts":"ac", "Drain Cleaning Experts":"drain"}
totalPages = len(services)*len(cities)

for serviceRep in services:
    for cityRep in cities:
        outFileName = cityRep + " " + serviceNames[serviceRep] + ".html"
        outFileName = outFileName.replace(" ", "_");
        print("Writing " + outFileName + "...")
        infile = open(sourceFile)
        outfile = open(outFileName, 'w')
        for line in infile:   #This is the line giving me problems
            if serviceTarget in line:
                line = line.replace(serviceTarget,serviceRep)
            if cityTarget in line:
                line = line.replace(cityTarget,cityRep)
            outfile.write(line)
            infile.close()
            outfile.close()
        totalPages -= 1; 
        print("DONE -- " + str(totalPages) + " left to go")

1 个回答

4

看起来像是缩进的问题:你真的想让 infile.close()outfile.close() 这两行代码在 for line in infile: 这个循环里面吗?

撰写回答