python文件输入更改权限
在python代码中,我使用fileinput模块替换: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
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)