值错误:关闭fi中的I/O操作

2024-10-05 14:31:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我在运行python代码时得到一个ValueError: I/O operation in closed file。我相信这是导致问题的原因:

fn = './seenFrontPagePosts.txt'

try:
    f = open(fn, 'r+')
except IOError:
    f = open(fn, 'w+')

try:
    frontOld = json.loads(f.readline())
except:
    frontOld = []

for post in redditFrontPage:
    if str(post.subreddit) == subreddit:
        print("We have a post on r/all! '{}'".format(post.title))
        if str(post.id) not in frontOld:
            print("We haven't seen it before!")
            message = post.reply(allMessage)
            message.distinguish(sticky=True)

            frontOld.append(str(post.id))
        else:
            print("We have seen it before.")
    f.seek(0)
    f.truncate()
    f.seek(0)
    f.write(json.dumps(frontOld))
    f.close()

我如何修复错误?是语法错误还是更复杂?在

以下是完整的错误:

^{pr2}$

Tags: inidjsonifhaveopenpostfn
2条回答

在最外层循环的一次迭代之后,f.close()关闭文件。所以,下次到达f.seek(0)时,它遇到关闭的文件并抛出错误。您需要在最外层循环的开始处执行open

您正在循环访问列表redditFrontPage中的元素,并在该循环中关闭文件f。因此,在下一次迭代中,您试图对该文件执行一些操作,但它是关闭的。在

您需要在循环中打开文件,或者不在循环中关闭文件。在

相关问题 更多 >