首页 > 解决方案 > 使用ugo + rw在文件上打开Python并“权限被拒绝”?

问题描述

我在用 Python3 编写的 RHEL 7.x 机器上有一个脚本。在测试这个脚本时,我创建了一个函数,它将附加到同一目录中的文本文件中。

如果我从本地目录执行脚本,即 -./pyscript.py一切都按预期工作。

但是我试图从一个更高的几个目录的 Bash 脚本中执行这个,它似乎不能正常工作。脚本中的其他函数将执行,但最后一个附加到文本文件的函数将不会执行。

现在,如果我从我的主目录以拥有它(和 txt 文件)的用户身份运行脚本,则脚本会因权限错误而出错。但是,如果我运行脚本并sudo没有错误地完成,但是它不会写入文本文件。

我的用户对 bash 脚本和 python 脚本之间的每个目录都具有 RW 权限。

sudo关于为什么或本地用户运行似乎不允许我写入文本文件的任何想法?

编辑

Traceback (most recent call last):
  File "ace/ppod/my_venv/emergingThreats/et_pro_watchlists.py", line 165, in <module>
    with open('etProLog.txt', 'a') as outlog:
PermissionError: [Errno 13] Permission denied: 'etProLog.txt'

标签: pythonlinuxpermissionscron

解决方案


如果使用open("filename.txt", 'mode'),它将在执行脚本的目录中打开该文件,而不是相对于脚本的当前目录。如果您想要脚本所在目录的路径,请导入os模块并使用open(os.path.dirname(os.path.abspath(__file__))+"filename.txt"). 权限错误是因为文件不存在;sudo 覆盖它但什么都不做,因为该文件不存在。


推荐阅读