python文件输入更改权限

python文件输入更改权限,python,file-permissions,file-io,Python,File Permissions,File Io,在python代码中,我使用fileinput模块替换: import fileinput for line in fileinput.FileInput("permission.txt",inplace=1): line = line.strip() if not 'def' in line: print line else: line=line.replace(line,'zzz') print line file

在python代码中,我使用fileinput模块替换:

import fileinput

for line in fileinput.FileInput("permission.txt",inplace=1):
    line = line.strip()
    if not 'def' in line:
        print line
    else:
        line=line.replace(line,'zzz')
        print line


fileinput.close()
但是,完成后,permission.txt权限现在更改为仅限root用户访问。我无法再编辑该文件。我只能删除它

我在谷歌上搜索了一下,它提到这可能是因为fileinput为这个读/写替换交互创建了一个临时文件

然而,自从1999年报告了这个bug以来,我本以为会有一个解决方案。我必须在代码中执行某些操作才能保持权限不变吗?或者这是操作系统级别的问题


我在Ubuntu 9.04上使用Python2.6.2,如果你能帮上忙,不要以root用户身份运行脚本

编辑 嗯,答案已经被接受了,但它不是一个真正的答案。如果您必须以root用户(或任何其他用户)身份运行脚本,则可以使用在处理文件之前确定文件所有者的用户id和组id,然后在处理后恢复文件所有权

import fileinput
import os

# save original file ownership details
stat = os.stat('permission.txt')
uid, gid = stat[4], stat[5]

for line in fileinput.FileInput("permission.txt",inplace=1):
    line = line.strip()
    if not 'def' in line:
        print line
    else:
        line=line.replace(line,'zzz')
        print line


fileinput.close()

# restore original file ownership
os.chown("permission.txt", uid, gid)