跨文件夹调用函数时文件路径错误的解决方案求助
解决跨文件夹调用时文件路径错误的问题
问题根源在于:Python的相对路径是基于**当前工作目录(CWD)**解析的,而非脚本文件所在的目录。当你在Folder2中运行main.py时,CWD是Folder2,所以./data.txt会指向Folder2下的文件,而非Folder1中的目标文件。
以下是无需传递路径参数的解决方案,无论从哪个位置调用reader.py都能正确定位data.txt:
方案1:使用os模块构建基于脚本位置的绝对路径
在reader.py中,利用__file__变量获取当前脚本的绝对路径,再拼接data.txt的路径:
import os # 获取reader.py所在文件夹的绝对路径 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接得到data.txt的绝对路径 data_file_path = os.path.join(script_dir, "data.txt") # 后续用这个路径打开文件 with open(data_file_path, "r") as f: content = f.read()
方案2:使用pathlib模块(Python3.4+推荐)
pathlib提供了更直观的路径操作方式,代码更简洁:
from pathlib import Path # 获取reader.py所在的文件夹路径 script_dir = Path(__file__).parent # 拼接data.txt路径(支持/运算符) data_file_path = script_dir / "data.txt" # 打开文件 with open(data_file_path, "r") as f: content = f.read()
这两种方法的核心逻辑一致:通过__file__获取脚本自身的位置,以此为基准构建目标文件的绝对路径,彻底摆脱当前工作目录的影响,完美适配多源调用的场景。
内容的提问来源于stack exchange,提问作者Ignitz
相关产品推荐
相关产品推荐

