跨目录调用含read_csv的函数时出现FileNotFoundError的解决方法
解决Python脚本路径依赖调用目录的问题
问题核心是Python的相对路径默认基于当前工作目录(即运行脚本的目录),而非脚本文件本身所在的目录。要让路径始终基于location.py的位置,可通过以下两种方式实现:
方法1:使用os模块(传统方式)
在location.py中用__file__变量获取脚本自身的绝对路径,再拼接目标文件路径:
import os import pandas as pd def assign(): # 获取location.py所在目录的绝对路径 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接并规范化目标文件路径,自动处理层级跳转 csv_path = os.path.normpath(os.path.join(script_dir, '../../Dataset/Import.csv')) df = pd.read_csv(csv_path) # 后续业务逻辑
方法2:使用pathlib模块(Python 3.4+推荐)
pathlib提供更直观的面向对象路径操作,代码更简洁易读:
from pathlib import Path import pandas as pd def assign(): # 获取location.py所在目录的绝对路径 script_dir = Path(__file__).parent.resolve() # 层级跳转+拼接路径(parent对应上级目录) csv_path = script_dir.parent.parent / "Dataset" / "Import.csv" df = pd.read_csv(csv_path) # 后续业务逻辑
原理说明
__file__是Python内置变量,存储当前脚本文件的路径(可能是相对或绝对路径,取决于运行方式),通过os.path.abspath或Path.resolve()转成绝对路径后,就能基于脚本所在目录构建目标文件的绝对路径,彻底摆脱对调用目录的依赖。
内容的提问来源于stack exchange,提问作者Bire
相关产品推荐
相关产品推荐

