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

如何用Python统计目录中.txt和.csv两种扩展名的文件数量?

嘿,刚好我之前也遇到过类似的需求,其实只要在你单一扩展名统计的基础上做一点点扩展就搞定了!我给你分享两种常用的实现方式,你可以根据自己的习惯选:

方法一:使用os模块(兼容旧版Python)

如果你之前用的是os模块统计单一扩展名,那只要把“判断是否等于某个扩展名”改成“判断是否在目标扩展名列表里”就行:

import os

def count_target_files(dir_path, target_extensions):
    count = 0
    # 遍历目录下的所有条目
    for filename in os.listdir(dir_path):
        # 跳过目录,只统计文件
        if os.path.isfile(os.path.join(dir_path, filename)):
            # 获取文件扩展名,splitext会返回(文件名, 扩展名),比如"test.txt"会得到("test", ".txt")
            file_ext = os.path.splitext(filename)[1].lower()  # 转小写兼容.TXT这类大写扩展名
            if file_ext in target_extensions:
                count += 1
    return count

# 调用示例
target_dir = "./your_directory"  # 替换成你的目标目录路径
extensions = [".txt", ".csv"]  # 要统计的扩展名,注意带点
total = count_target_files(target_dir, extensions)
print(f".txt和.csv文件总数:{total}")

小补充:递归统计子目录里的文件

如果你的目录还有子文件夹,想要把里面的目标文件也统计进去,可以用os.walk:

import os

def count_target_files_recursive(dir_path, target_extensions):
    count = 0
    for root, dirs, files in os.walk(dir_path):
        for filename in files:
            file_ext = os.path.splitext(filename)[1].lower()
            if file_ext in target_extensions:
                count += 1
    return count

# 调用方式和上面一致
方法二:使用pathlib模块(Python3.4+ 推荐)

pathlib是Python3.4之后引入的现代文件路径处理模块,代码更简洁易读:

from pathlib import Path

def count_target_files(dir_path, target_extensions):
    # 统一转小写,方便判断
    target_extensions = [ext.lower() for ext in target_extensions]
    count = 0
    # 遍历目录下的所有文件(不包含子目录)
    for file in Path(dir_path).iterdir():
        if file.is_file():
            # file.suffix直接获取文件扩展名,比如".txt"
            if file.suffix.lower() in target_extensions:
                count += 1
    return count

# 调用示例
target_dir = "./your_directory"
extensions = [".txt", ".csv"]
total = count_target_files(target_dir, extensions)
print(f".txt和.csv文件总数:{total}")

递归统计子目录的简化写法

用rglob可以一行搞定递归统计,特别适合快速实现需求:

from pathlib import Path

target_dir = "./your_directory"
# rglob递归匹配所有子目录里的文件,"*.txt"和"*.csv"是通配符
txt_count = len(list(Path(target_dir).rglob("*.txt")))
csv_count = len(list(Path(target_dir).rglob("*.csv")))
total = txt_count + csv_count
print(f".txt和.csv文件总数:{total}")

如果要忽略大小写(比如匹配.TXT、.CSV),Python3.10+可以加case_sensitive=False参数:

txt_count = len(list(Path(target_dir).rglob("*.txt", case_sensitive=False)))
csv_count = len(list(Path(target_dir).rglob("*.csv", case_sensitive=False)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:31:42