我在 RHEL 7.x 机器上有一个用 Python3 编写的脚本。在测试此脚本时,我创建了一个函数,它将附加到同一目录中的文本文件。
如果我从本地目录执行脚本,即 -./pyscript.py
一切都会按预期工作。
但我试图从更高几个目录的 Bash 脚本执行此操作,但它似乎无法正常工作。脚本中的其他函数将执行,但附加到文本文件的最后一个函数将不会执行。
现在,如果我以拥有该脚本(和 txt 文件)的用户身份从我的主目录运行该脚本,则该脚本会出现权限错误。但是,如果我运行脚本,sudo
它不会出现任何错误,但它不会写入文本文件。
我的用户对 bash 脚本和 python 脚本之间的每个目录都具有 RW 权限。
sudo
关于为什么本地用户运行似乎不允许我写入文本文件的任何想法?
答案1
我把这个解决了。问题是,当您从另一个目录执行脚本时,python 脚本会将执行目录视为本地目录。所以在我的代码中我有:
with open('myfile.txt', 'a') ...
它并不是试图打开实际的文件,而是试图访问我执行命令的目录中不存在的文件。
要修复,只需使用文本文件的完整路径。