【问题标题】:python fileinput changes permissionpython fileinput更改权限
【发布时间】:2010-12-08 23:36:17
【问题描述】:

在我的 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 年报告了该错误以来,我本以为会对此进行修复。我是否必须在代码中执行某些操作以保持权限相同?还是操作系统级别的问题。

我在 Ubuntu 9.04 上使用 Python 2.6.2

【问题讨论】:

    标签: python file-permissions file-io


    【解决方案1】:

    如果您能提供帮助,请不要以 root 身份运行您的脚本。

    编辑 好吧,答案已被接受,但这并不是一个真正的答案。如果您必须以 root (或实际上以任何其他用户)身份运行脚本,您可以在处理文件之前使用os.stat() 确定文件所有者的用户 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)
    

    【讨论】:

      猜你喜欢
      • 2013-04-21
      • 2011-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-05
      • 1970-01-01
      • 2021-01-01
      相关资源
      最近更新 更多