You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何遍历筛选文件夹中文件名仅为数字的csv文件

实现方案

核心思路是先拆分文件名,分别校验后缀是否为csv、不带后缀的文件名主体是否完全由数字组成,以下是两种常用实现方式:

方法1:使用os模块实现

import os

file_list = ['123.csv', 'not.csv', '75839.csv', '2.csv', 'bad.csv', '23bad8.csv']
target_files = []

for f in file_list:
    # 拆分得到文件名主体、后缀
    name_stem, suffix = os.path.splitext(f)
    # 同时满足后缀为csv、主体全为数字两个条件
    if suffix.lower() == '.csv' and name_stem.isdigit():
        target_files.append(f)
        # 此处添加你的文件处理逻辑

如果需要更简洁的写法,可以用列表推导式:

target_files = [f for f in file_list if os.path.splitext(f)[1].lower() == '.csv' and os.path.splitext(f)[0].isdigit()]

方法2:使用pathlib实现(更直观)

适合需要直接遍历指定文件夹的场景:

from pathlib import Path

# 替换为你的目标文件夹路径
dir_path = Path("./target_folder")
target_files = []

for file in dir_path.iterdir():
    # stem对应不带后缀的文件名,suffix对应后缀
    if file.suffix.lower() == '.csv' and file.stem.isdigit():
        target_files.append(file.name)
        # 此处添加你的文件处理逻辑

逻辑说明

  • str.isdigit()是Python字符串内置方法,会判断字符串的所有字符是否都是数字,只要存在非数字字符就会返回False,刚好匹配你的需求
  • 代码中加了suffix.lower()是为了兼容.CSV大写后缀的特殊情况,如果你的场景里所有csv后缀都是小写,可以去掉.lower()
  • 针对示例输入的文件列表,以上两种方法筛选出的结果都是['123.csv', '75839.csv', '2.csv'],完全符合预期

如果你的场景存在文件名带负号、小数点等特殊数字格式的需求,可以改用正则匹配替换isdigit()判断,示例如下:

import re
# 匹配整数(支持负号)的正则
if re.fullmatch(r'-?\d+', name_stem):
    # 符合条件

内容的提问来源于stack exchange,提问作者Gony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 21:36:03