如何为Python脚本设置与仓库目录绑定的固定主目录?
解决Python脚本依赖仓库目录的路径问题
这个问题太常见了——你现在用os.getcwd()获取的是你执行脚本时的工作目录,而不是脚本本身所在的仓库根目录。所以当你在仓库外运行python dir1/dir2/file.py时,base_dir会指向你当前的外部目录,自然找不到CSV文件夹。
核心解决思路是:找到脚本文件所在的绝对路径,再根据仓库目录结构向上追溯到根目录,这样不管在哪里运行脚本,路径都不会出错。
方案1:使用os模块(兼容所有Python版本)
import os # 获取当前脚本文件的绝对路径 script_full_path = os.path.abspath(__file__) # 获取脚本所在的文件夹路径 script_dir = os.path.dirname(script_full_path) # 向上追溯到仓库根目录(这里假设脚本在仓库下的dir1/dir2,需要连续调用两次dirname) base_dir = os.path.dirname(os.path.dirname(script_dir)) # 拼接CSV目录路径(用os.path.join避免跨系统路径分隔符问题) csv_dir = os.path.join(base_dir, 'CSV')
方案2:使用pathlib(Python3.4+推荐,语法更直观)
from pathlib import Path # 获取当前脚本的绝对路径对象(resolve()确保是绝对路径) script_path = Path(__file__).resolve() # 向上两级定位到仓库根目录(根据你的目录结构调整parent的调用次数) base_dir = script_path.parent.parent # 直接用/拼接路径,pathlib会自动处理跨系统差异 csv_dir = base_dir / 'CSV'
注意事项
如果后续你的脚本在仓库内的位置发生变化(比如移动到其他子目录),记得调整向上追溯的层级(比如os.path.dirname的次数或者parent的调用次数),保证base_dir始终指向仓库根目录。
内容的提问来源于stack exchange,提问作者irahorecka
相关产品推荐
相关产品推荐

