Python按指定中间名称读取CSV文件问题(glob返回空数据)
问题解决
核心问题分析
- Glob匹配模式错误:你写的
[0100]*.csv是字符集合匹配规则,只会匹配以0或1开头的文件,而非文件名中包含0100的文件。 - 循环遍历写法错误:
glob.glob()返回的是文件名字符串列表,直接用for idx, f in ...会抛出值错误,因为每个元素都是单个字符串,无法拆成两个变量。
修正后的代码
import glob import pandas as pd ls_data = list() # 用*匹配任意字符,确保文件名中包含0100 for idx, f in enumerate(glob.glob('*0100*.csv')): df_temp = pd.read_csv(f, delimiter=';') df_temp["layer_number"] = idx ls_data.append(df_temp) print(idx) df_L = pd.concat(ls_data, axis=0)
关键改动说明
- 匹配模式改为
*0100*.csv:*表示任意长度的任意字符,能匹配文件名中任意位置包含0100的CSV文件。 - 用
enumerate()包裹glob.glob():同时获取文件的索引idx和文件名f,避免遍历报错。
若仍返回空数据,检查两点:
- 确认CSV文件路径正确,若文件不在脚本运行目录,需添加完整路径,比如
'./target_dir/*0100*.csv'。 - 确认文件名确实包含
0100,注意大小写(glob默认区分大小写,Windows系统除外)。
内容的提问来源于stack exchange,提问作者broo
相关产品推荐
相关产品推荐

