用ugo + rw打开Python文件和“权限被拒绝”?

问题描述 投票:0回答:1

我在用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'
python linux permissions cron
1个回答
2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.