如何在macOS下通过环境变量设置Python open()的文件查找根目录?
macOS下Python open()相对路径指定查找根目录的解决方案
关键说明
Python的open()函数处理相对路径时,是基于**当前工作目录(CWD)**定位文件的,和PYTHONPATH无关(PYTHONPATH仅用于控制模块导入的搜索路径)。所以要实现需求,核心是修改脚本运行时的CWD,无需改动代码或移动文件。
具体实现方式
方式1:终端运行前切换目录
直接在终端中先切换到目标文件所在目录,再执行脚本:
cd /目标文件所在的绝对路径 && python3 /你的脚本的绝对路径.py
例如,目标文件在/Users/xxx/data,脚本在/Users/xxx/scripts,就执行:
cd /Users/xxx/data && python3 /Users/xxx/scripts/my_script.py
此时脚本的CWD就是/Users/xxx/data,open('file.txt')会自动在该目录下查找文件。
方式2:用Shell脚本封装运行流程
如果不想每次手动输入切换目录的命令,可以写一个Shell脚本(比如run_my_script.sh)来固定流程:
#!/bin/bash # 切换到目标文件目录 cd /目标文件所在的绝对路径 # 执行Python脚本 python3 /你的脚本的绝对路径.py
给脚本添加执行权限:
chmod +x run_my_script.sh
之后每次运行脚本只需执行:
./run_my_script.sh
注意事项
- 不要试图用
PYTHONPATH来解决这个问题,它仅作用于模块导入,对文件路径查找没有影响。 - 确保目标目录和脚本路径使用绝对路径,避免因终端初始目录不同导致的路径错误。
内容的提问来源于stack exchange,提问作者Vyacheslav
相关产品推荐
相关产品推荐

