无法读取不同路径下的文件:基于文件名日期读取CSV的代码问题
问题分析
你的代码失效的核心原因是glob路径拼接错误:你用and运算符连接路径和文件名模式,这在Python中是逻辑运算而非路径拼接。比如r'G:\New folder' and date_6_1会直接返回date_6_1的值,相当于只在当前工作目录(Notebook所在文件夹)查找文件,自然找不到其他路径下的目标文件。
修正方案
你需要把路径和文件名模式正确拼接成完整的搜索路径,推荐两种可靠方式:
方式1:使用os.path.join(兼容所有操作系统)
import pandas as pd import glob import os date_6 = '2024-05-15' # 生成文件名模式:*20240515.csv(用replace替代切片更简洁) date_6_1 = f"*{date_6.replace('-', '')}.csv" # 正确拼接路径与文件名模式 search_path = os.path.join(r'G:\New folder', date_6_1) # 遍历匹配文件(用列表存储避免覆盖) df_list = [] for file in glob.glob(search_path): df = pd.read_csv(file) df_list.append(df) # 单个文件直接取第一个,多个文件可合并 df = pd.concat(df_list) if df_list else None
方式2:使用pathlib(现代路径处理方案)
import pandas as pd from pathlib import Path date_6 = '2024-05-15' date_pattern = f"*{date_6.replace('-', '')}.csv" # 定义目标文件夹路径 target_dir = Path(r'G:\New folder') # 查找所有匹配文件 df_list = [] for file in target_dir.glob(date_pattern): df = pd.read_csv(file) df_list.append(df) df = pd.concat(df_list) if df_list else None
额外提示
原代码中循环直接赋值df = pd.read_csv(file)会导致最后仅保留最后一个文件的数据,建议用列表存储所有文件的DataFrame,再按需合并。
内容的提问来源于stack exchange,提问作者hoa tran
相关产品推荐
相关产品推荐

