python - 使用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 覆盖它但什么都不做,因为该文件不存在。
推荐阅读
- abaqus - 如何在 ABAQUS 中收缩(从吸力/负压)粘土模型?
- c# - 带有 BaseAddress 的 HttpClient 不起作用(生产 + 集成测试)?
- flutter - Flutter - 为 App Store 加密应用程序
- authentication - 无法在 Python 中使用服务帐户密钥文件发布请求,获取“无效的 IAP 凭据:无法解析 JWT”、“401 状态代码”
- android - 颤振 - 无法获取“https://google.bintray.com/exoplayer/com/google/android/gms/play-services-location/maven-metadata.xml”。收到状态码403
- python - 如何更改列表值?
- flutter - Flutter window_utils 不编译代码并给出 CMakeLists.txt 文件错误
- vhdl - ModelSim:英特尔片上闪存 IP:错误:(vsim-3033)“altera_onchip_flash_block”的实例化失败
- java - 更正 java 代码以获得更高的可扩展性
- android - 构建 android 映像时出错,jack 服务器失败