Python模块内如何通过相对路径访问DATA文件夹?
正确获取DATA文件夹路径的方法
你的问题出在没有基于脚本文件的实际位置来定位路径,下面是具体解决办法:
错误原因分析
- 第一种写法
Path('..').parents[2]依赖当前工作目录(即你执行脚本时所在的目录),而非脚本文件本身的存放目录,一旦运行位置改变,路径就会失效。 - 第二种写法
Path('__file__').parents[2]是把字符串'__file__'当作路径名,没有引用Python内置的__file__变量,自然找不到正确的父目录。
正确实现代码
利用__file__变量获取当前脚本的绝对路径,再向上定位到项目根目录,最后拼接DATA文件夹路径:
from pathlib import Path # 获取当前脚本的绝对路径,resolve()处理软链接等特殊情况 current_script = Path(__file__).resolve() # 从src/phonebook/book.py向上遍历2级到达项目根目录 project_root = current_script.parents[2] CSV_USERS_PATH = project_root / "DATA" # 可选:打印路径验证是否正确 print(CSV_USERS_PATH)
如果担心数层级容易出错,也可以用更直观的逐级获取方式:
from pathlib import Path current_script = Path(__file__).resolve() phonebook_dir = current_script.parent # 指向src/phonebook src_dir = phonebook_dir.parent # 指向src project_root = src_dir.parent # 指向项目根目录 CSV_USERS_PATH = project_root / "DATA"
这样无论你在哪个目录下运行脚本,都能正确定位到DATA文件夹。
内容的提问来源于stack exchange,提问作者JFerro
相关产品推荐
相关产品推荐

