Python跨目录导入父目录文件后无法读取同目录CSV文件问题求助
问题根因
该报错和模块导入逻辑无关,是工作路径匹配错误导致的:
- 单独运行
cleaning.py时,当前工作目录为cleaning.py所在的主文件夹,相对路径Transaction Listing.csv能正确匹配到文件 - 从apps目录下的managers文件导入cleaning模块时,当前工作目录为
apps子文件夹,程序会尝试在apps目录下寻找Transaction Listing.csv,自然找不到文件
修复步骤
需要对两个文件的路径逻辑分别做修改:
1. 修改cleaning.py的csv读取逻辑
不要使用固定相对路径读取csv,改为基于cleaning.py自身的文件位置拼接绝对路径,确保不管该文件被哪里导入都能正确定位csv:
import os import pandas as pd # 你原本使用的读取库无需修改 # 核心修改:获取当前cleaning.py所在的目录绝对路径 cleaning_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接csv文件的完整路径 csv_path = os.path.join(cleaning_dir, "Transaction Listing.csv") # 用拼接后的绝对路径读取文件 df_invoices_full = pd.read_csv(csv_path)
2. 修正managers文件的模块导入路径
你当前写的os.path.abspath("cleaning.py")会受运行时工作目录影响,大概率追加的路径是错误的,改为基于managers文件自身位置定位主目录:
import sys import os # 获取managers文件所在的apps目录的上级目录(即存放cleaning.py的主目录) parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(parent_dir) # 之后正常导入即可 from cleaning import df_invoices_full
内容的提问来源于stack exchange,提问作者Cristian Tellez Montoya
相关产品推荐
相关产品推荐

