Python:Readline在10行后返回错误

时间:2014-07-19 00:20:25

标签: python file-io io readline

我正在尝试在for循环中使用readline on file。问题是我开始收到I / O错误。看来我在10条读取线后得到了I / O错误。

这是我的功能:

def getAll():
with open("nodes2.txt", "r+") as f:
    for i in range(0, 200):
        print "**%s**"%(i)
        try:
            file = f.readline()
            file = file[:-1]
            # print "*%s*" % (file)
            entities = getAllPagesEntities(file)
            # print entities
            for en in entities:
                try:
                    dict = getFirmAttributes(en)
                    printToFile(dict)
                except Exception,e:
                    with open("log_getFirmAttributes.txt","a") as f:
                        f.write(str(e))
                        f.write("\n")
        except Exception,e:
            with open("log_readFile.txt","a") as f:
                f.write(str(e))
                f.write("\n")

这是一个印刷的例外情况:

I/O operation on closed file

我认为这个问题不能由其他已使用的函数引起,所以我不在这里附加它们。我认为它是由使用的文件引起的,但当我尝试读取200并打印它们时,一切都很完美。

with open("nodes2.txt", "r+") as f:
    for i in range(0, 200):
        print f.readline()

你知道可能是什么问题吗?感谢

1 个答案:

答案 0 :(得分:3)

except块中的以下行会覆盖f,导致打开文件被关闭。

with open("log_readFile.txt","a") as f:
    f.write(str(e))
    f.write("\n")

更改文件的名称f以附加到另一个名称将解决问题:

with open("log_readFile.txt", "a") as logf:
    logf.write(str(e))
    logf.write("\n")