Python无法覆盖文件

0 投票
2 回答
2290 浏览
提问于 2025-04-18 02:28

我正在从一个文件中读取内容,然后往里面添加一行,最后再把它保存回去。在C#中这样做是可以的,但在Python中却不行。有人能告诉我为什么吗?

f = "blogs/%s.comment" % blogtitle
if os.path.isfile(f):
    temp = file(f).readlines()
    temp.append(comment)

    overr = open(f, "w") #line 13
    for l in temp: overr.write(l)

我遇到的错误是 IOError: [Errno 13] Permission denied,出现在第13行。

我是在Apache中以.wsgi文件的形式运行这个文件,并且文件所在的文件夹权限是775。

2 个回答

0

你没有关闭文件。你应该用with语句来打开文件,这样可以自动处理文件的关闭。而且,直接以追加模式打开文件会更简单、更高效,省得你先读取整个文件再写回去:

path = "blogs/%s.comment" % blogtitle
with open(path, 'a') as f:
    f.write(comment)
1

你在第一次打开文件后忘记把它关闭了,记得这样做:

f = "blogs/%s.comment" % blogtitle
if os.path.isfile(f):
    with open(f, 'r') as fl:
        temp = fl.readlines()
        temp.append(comment)

    with open(f, "w") as fl:
        for l in temp: fl.write(l)

撰写回答