如何设置工作目录并读取含5位数字变量前缀的.csv文件?
匹配任意5位数字前缀的CSV文件并读取
嘿,这个需求很实用!要自动匹配并读取以5位数字开头、后缀为_output.csv的文件,你可以结合Python的glob模块(用于文件路径匹配)和正则表达式来实现精准筛选。下面是两种靠谱的实现方式:
方法一:快速筛选(适合简单场景)
先获取所有*_output.csv格式的文件,再筛选出前缀是5位数字的目标文件:
import pandas as pd import glob # 获取当前目录下所有以_output.csv结尾的文件 file_candidates = glob.glob("*_output.csv") # 找出第一个前缀为5位数字的文件(用next避免遍历全部) target_file = next((f for f in file_candidates if f[:5].isdigit()), None) if target_file: d = pd.read_csv(target_file) print(f"成功读取文件: {target_file}") else: print("未找到符合要求的5位数字前缀_output.csv文件")
如果存在多个符合条件的文件,你可以把next()改成循环遍历,把所有文件的数据合并起来。
方法二:正则精准匹配(推荐)
如果需要严格避免误判(比如排除像abcde_output.csv这种非数字前缀的文件),用正则表达式来精确校验文件名会更稳妥:
import pandas as pd import glob import re # 定义匹配规则:必须以5位数字开头,紧跟_output.csv结尾 pattern = re.compile(r"^\d{5}_output\.csv$") # 获取当前目录下所有CSV文件并筛选 file_candidates = glob.glob("*.csv") target_files = [f for f in file_candidates if pattern.match(f)] if target_files: # 读取第一个匹配的文件(多文件可循环处理) d = pd.read_csv(target_files[0]) print(f"成功读取文件: {target_files[0]}") else: print("没有找到符合规则的文件")
补充小提示
- 如果文件不在当前工作目录,记得给
glob.glob加上完整路径,比如glob.glob("/your/file/path/*_output.csv") - 若要合并多个匹配文件的数据,可以用
pd.concat():dfs = [pd.read_csv(f) for f in target_files] combined_df = pd.concat(dfs, ignore_index=True)
内容的提问来源于stack exchange,提问作者geojasm
相关产品推荐
相关产品推荐

