文件写入尝试无声失败 - 权限问题

3 投票
1 回答
1197 浏览
提问于 2025-04-16 23:46

我正在尝试把一小段文字写入一个还不存在的文件,这个文件位于一个由根用户和根组拥有的目录里。我查看了Python的文档,了解如何检查一个用户是否有权限写文件,下面的代码就是文档中的示例。

这是出问题的代码:

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 个回答

0

EACCESS应该是EACCES,这个是从标准的Unix C库来的。不过这并不会导致你看不到错误,因为IOERROR会被抛出,即使if语句的代码块没有执行,你还是会重新抛出这个错误。这听起来像是一个Linux特有的问题,可能是SELinux引起的。

顺便提一下,使用上下文管理器会很有用,这样就可以避免特定的else关闭操作。

撰写回答