【问题标题】:Permissions Error and No such file or Directory权限错误,没有这样的文件或目录
【发布时间】:2021-12-11 07:17:27
【问题描述】:
if not os.path.exists('/var/log/'):
    os.makedirs('/var/log/')
print(log_filepath)
os.chmod(log_filepath, stat.S_IWOTH)

f_log_in = open(log_filepath, "a")

如果没有 chmod 命令,它会抛出一个错误,提示 f_log_in 文件打开命令的权限被拒绝。

    f_log_in = open(log_filepath, "a")
PermissionError: [Errno 13] Permission denied: '/var/log/s3_sync.log'

当我包含 os.chmod 命令时,它会说:

   os.chmod(log_filepath, stat.S_IWOTH)
FileNotFoundError: [Errno 2] No such file or directory: '/var/log/s3_sync.log'

还有其他方法可以解决这个问题吗?

编辑:这不是重复的,我删除了另一个。

【问题讨论】:

  • 能否将ls -l /var/logls -l /var/log/s3_sync.log 的输出添加到问题中?
  • @user17242583 ls -l 给了我一个巨大的列表。第二个不存在。
  • 哦,对不起,我的意思是ls -ld /var/log。所以我可以看到/var/log 的r​​wx 权限字符串。

标签: python python-3.x file file-permissions


【解决方案1】:

log_filepath 中指示的文件不存在。因此,您不能像使用open 那样简单地打开它。有关详细信息,请参阅 this answer,但您还需要 w+a+ 来创建文件。

您得到的第二个错误正是因为消息 - 文件不存在,因此您无法更改写入权限。

现在,如果您没有以具有足够权限访问/var/log(或log_filepath 指向的任何位置)的用户身份执行程序,您可能仍然会遇到问题。您必须以具有足够权限的用户身份运行 - 没有办法解决这个问题,要么以具有该权限的用户身份运行,要么通过更改目录本身的权限,以便您正在执行的用户拥有足够的权限。

【讨论】:

  • 谢谢。我以为open 创建了一个文件,如果它不存在?
  • @mjmr 如果您使用a+w+,这是正确的,但如果您只是使用aw 作为您传递给open 的标志,则不是。跨度>
猜你喜欢
  • 2021-10-31
  • 1970-01-01
  • 2013-08-08
  • 2013-11-04
  • 2012-02-18
  • 2012-10-21
  • 2011-03-22
  • 2015-12-29
  • 2011-02-06
相关资源
最近更新 更多