使用ugo + rw打开Python并且“权限被拒绝”在文件上?

时间:2019-04-25 16:39:43

标签: python linux permissions cron

我在用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'

1 个答案:

答案 0 :(得分:2)

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