2011-08-17 51 views
3

我正在尝试将文本的一小部分写入(至今)不存在的文件到根用户和组拥有的目录中。我看了一下Python文档regarding checking if a user is authorised来编写文件 - 下面的代码反映了文档示例。文件写入尝试默默无闻 - 权限问题

这里的问题的代码位:

try: 
    out = open('/owned/by/root/somefile.txt', 'w') 
except IOError as e: 
    if e.errno == errno.EACCESS: 
     print('Cannot write file due to permission error') 
    raise 
else: 
    out.write('Some text content here') 
    out.close() 

在运行此代码(甚至根用户),没有错误被打印到终端和不发生异常;但该文件从未实际写入目录。

+1

如果您在打印代码的最顶端打印打印电话,打印出来吗? (即,你是否正确查看程序的标准输出?) – katrielalex

+1

你在什么操作系统?你有什么特别的安全设置?什么版本的Python? – agf

+0

您是否尝试使用[2.4文档](http://docs.python.org/release/2.4.4/lib/os-file-dir.html)中指定的'access',即使当前的文档建议不要使用它? – agf

回答

0

EACCESS应该是EACCES(从标准的unix C库衍生而来)。这不会导致你看不到一个错误,但是随着IOERROR的提升,即使if块没有被重新提升执行。这听起来像一个Linux特定的问题。可能是SELinux。

顺便说一句,上下文管理器将有助于避免特定的close()。