我在用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会覆盖但不执行任何操作,因为该文件不存在。