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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用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'
答案

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

以上是关于用ugo + rw打开Python文件和“权限被拒绝”?的主要内容,如果未能解决你的问题,请参考以下文章

Linux之UGO权限

20181122基本权限UGO

linux的ugo权限

linux 基础命令

Linux-文件权限

Linux基础系统权限