python中获取当前项目的目录

部署运行你感兴趣的模型镜像

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂

在这里插入图片描述

今天介绍一下,如何在python中获取当前项目所在的目录,而不是运行脚本的目录。


class ProjectPaths:
    # 初始化时获取当前脚本的路径
    @staticmethod
    def get_script_dir():
        current_path = sys.path[0]
        return current_path


# 读取词云的路径
FILE_PATH = ProjectPaths.get_script_dir() + '/ciyun/'
# 生成词云路径
CIYUN_PATH = ProjectPaths.get_script_dir() + '/ciyun/'
# 项目路径
LOG_PATH = ProjectPaths.get_script_dir() + '/damoxing/'
# 其他文件的路径
PROJECT_PATH = ProjectPaths.get_script_dir()+"/"

然后我们在别的python文件中就可以直接通过代码使用了,代码如下:


def get_json(key: str):
    if not os.path.exists(LOG_PATH + 'csv_data/zp_token.json'):
        with open(LOG_PATH + "csv_data/zp_token.json", "w", encoding='utf-8') as f:
            json.dump({'accessToken': '',
                       'refreshToken': 'eyJhbGc'},
                      f)
            f.close()
    with open(LOG_PATH + "csv_data/zp_token.json", "r", encoding='utf-8') as f:
        user_dic = json.load(f)
        f.close()
    if key in user_dic:
        return user_dic[key]
    else:
        return None

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

Python获取当前项目的根目录是一个常见的需求,尤其是在加载配置文件、日志路径、数据文件等资源时。以下是几种**推荐的方法**来准确获取项目目录。 --- ### ✅ 方法 1:基于 `__file__` 和 `pathlib`(推荐) ```python from pathlib import Path # 获取当前文件所在目录 CURRENT_FILE = Path(__file__).resolve() # 获取项目目录(假设项目目录当前文件所在目录的父级或更上层) PROJECT_ROOT = CURRENT_FILE.parent print(f"项目目录: {PROJECT_ROOT}") ``` > 🔍 如果你的脚本在子目录中(如 `src/main.py`),可以向上跳多级: ```python PROJECT_ROOT = CURRENT_FILE.parent.parent # 跳到上两级 # 或者根据实际结构定位 ``` --- ### ✅ 方法 2:使用 `pathlib` 定位包含 `.git` 或 `pyproject.toml` 的目录(智能识别项目根) 适用于项目结构复杂或多层嵌套的情况: ```python from pathlib import Path def get_project_root(): """从当前文件出发,向上查找包含 .git 或 pyproject.toml 的目录作为项目根""" current = Path(__file__).resolve() for parent in [current, *current.parents]: if (parent / ".git").exists() or (parent / "pyproject.toml").exists(): return parent if (parent / ".env").exists(): # 可选:根据 .env 判断 return parent return current # 找不到则返回当前目录 PROJECT_ROOT = get_project_root() print(f"项目目录: {PROJECT_ROOT}") ``` > ✅ 优点:自动识别真正的项目目录,不依赖硬编码。 --- ### ✅ 方法 3:固定入口处定义项目根(最安全,推荐用于生产项目) 在项目主入口文件(如 `main.py` 或 `app.py`)中定义一次: ```python # main.py from pathlib import Path # 假设 main.py 在项目目录下 PROJECT_ROOT = Path(__file__).parent.resolve() # 将 PROJECT_ROOT 注入全局变量或配置类 import sys sys.path.append(str(PROJECT_ROOT)) # 可选:添加到模块搜索路径 # 导入其他模块 from config.settings import DATABASE_PATH ``` 然后在其他模块中通过导入使用: ```python # config/settings.py from pathlib import Path # 假设此文件位于项目根下的 config/ 目录 PROJECT_ROOT = Path(__file__).parent.parent.resolve() DATABASE_PATH = PROJECT_ROOT / "data" / "db.sqlite3" LOG_DIR = PROJECT_ROOT / "logs" ``` --- ### ✅ 方法 4:使用 `os` 模块(传统方式,兼容老代码) ```python import os # 获取当前文件所在目录 CURRENT_DIR = os.path.dirname(os.path.abspath(__file__)) # 项目目录 PROJECT_ROOT = os.path.dirname(CURRENT_DIR) # 根据层级调整 print(f"项目目录: {PROJECT_ROOT}") ``` > ⚠️ 不如 `pathlib` 简洁和跨平台友好。 --- ### 📌 最佳实践建议 | 场景 | 推荐方法 | |------|----------| | 小项目 | 方法 1:`Path(__file__).parent` | | 大型/多层项目 | 方法 2:向上查找 `.git` 或 `pyproject.toml` | | 生产项目 | 方法 3:在入口统一定义 `PROJECT_ROOT` 并共享 | | 兼容旧代码 | 方法 4:`os.path.dirname(...)` | --- ### ❗ 注意事项 - `__file__` 是当前 **脚本的路径**,不是工作目录(`os.getcwd()`)。 - 使用 `resolve()` 可以处理符号链接和相对路径。 - 避免使用 `os.getcwd()` 获取项目根,因为它依赖运行时的工作目录,不可靠! ```python # ❌ 错误示例:依赖运行位置 import os PROJECT_ROOT = os.getcwd() # 如果你在别的目录运行脚本,会出错! ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穆雄雄

哎,貌似还没开张来着呢~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值