You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中仅通过文件夹名查找路径,无需修改代码适配位置

在Python中用相对路径/文件夹名定位文件夹的可行方法

当然可以实现,以下几种方法能帮你摆脱绝对路径的束缚,移动文件夹不用改代码:

1. 基于脚本自身位置的相对路径(最推荐)

直接用./Donnees_Prevent/Donnees_par_impact/的问题在于,它是相对于你运行脚本时的工作目录,而非脚本本身所在的目录——如果从别的路径运行脚本,很容易找不到目标文件夹。更稳妥的方式是先获取脚本自己的位置,再拼接目标文件夹的相对路径:

用os模块实现:

import os
# 获取当前脚本所在文件夹的绝对路径
script_folder = os.path.dirname(os.path.abspath(__file__))
# 拼接目标文件夹的相对路径
target_folder = os.path.join(script_folder, "Donnees_Prevent/Donnees_par_impact/")

用更简洁的pathlib(Python 3.4+推荐):

from pathlib import Path
# 获取脚本的绝对路径,再取它的父文件夹(即脚本所在目录)
script_dir = Path(__file__).resolve().parent
# 直接用/拼接相对路径
target_folder = script_dir / "Donnees_Prevent" / "Donnees_par_impact"

只要你的脚本和目标文件夹的相对位置不变,哪怕整个项目文件夹移到别的磁盘、别的目录,代码都不用修改。

2. 从项目根目录出发的相对路径

如果你的项目有固定的根目录结构(比如根目录下有README.md或requirements.txt这类标志性文件),可以先定位到项目根目录,再往下查找目标文件夹:

from pathlib import Path
# 从脚本位置往上遍历,直到找到包含README.md的文件夹(项目根目录)
root_dir = Path(__file__).resolve()
while not (root_dir / "README.md").exists():
    root_dir = root_dir.parent
# 从根目录拼接目标路径
target_folder = root_dir / "Donnees_joueur" / "Donnees_Prevent" / "Donnees_par_impact"

这种方式适合大型项目,哪怕脚本在项目内的位置变动,只要根目录的标志性文件还在,就能正确找到目标文件夹。

3. 全局搜索文件夹(不推荐)

如果实在不清楚目标文件夹的相对位置,只能通过全局遍历磁盘查找,但这种方法速度慢,且遇到重名文件夹时会返回第一个匹配的结果,准确率没保障:

import os
def find_folder(target_name, start_path="C:/"):
    for dirpath, dirnames, _ in os.walk(start_path):
        if target_name in dirnames:
            return os.path.join(dirpath, target_name)
# 查找Donnees_par_impact文件夹
target_folder = find_folder("Donnees_par_impact")

除非迫不得已,否则不建议使用这个方法。


内容的提问来源于stack exchange,提问作者Lucas Monnier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 03:15:41