使用变量作为文件路径创建pandas DataFrame时遇到问题
问题分析与解决
核心问题
你遇到的错误根本不是双斜杠的锅,而是**os.listdir()返回的只是单纯的文件名,不是完整路径**。当你调用os.path.abspath(file)时,它会把当前工作目录和文件名拼在一起,而不是你指定的files_path目录。这就导致pandas找错了地方,自然报文件不存在的错误。
解决方案
方法1:用os.path.join拼出正确路径
直接把目标文件夹路径和文件名拼接,得到真正的完整路径:
import os import pandas as pd df = pd.DataFrame() ctr = 0 files_path = "你的目标文件夹路径" str_tr = "要匹配的字符串" for file in os.listdir(files_path): if str_tr in file: # 关键:把文件夹路径和文件名拼起来,得到正确的文件路径 full_path = os.path.join(files_path, file) # 可以先打印确认路径是否正确 # print(full_path) df[ctr] = pd.read_excel(full_path) ctr += 1
方法2:用pathlib(更简洁的现代写法)
Python 3.4及以上版本推荐用pathlib模块,路径处理更直观,还能避免很多拼接错误:
from pathlib import Path import pandas as pd df = pd.DataFrame() ctr = 0 files_path = Path("你的目标文件夹路径") str_tr = "要匹配的字符串" # 直接遍历文件夹下的所有完整路径 for file_path in files_path.iterdir(): if str_tr in file_path.name: df[ctr] = pd.read_excel(file_path) ctr += 1
补充说明
- 双斜杠在Python路径里是正常的,不管是转义后的
\\还是用r前缀的原始字符串,pandas都能正确识别,所以你一开始的判断错了。 - 要是不确定路径对不对,在读取文件前先打印出来看看,确认是不是指向你要找的那个文件。
内容的提问来源于stack exchange,提问作者toerag
相关产品推荐
相关产品推荐

