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

如何通过glob同时遍历.tar与csv.gz后缀的文件?

解决方案

首先纠正一个小误解:你代码里的*不是正则字符,是glob模块的通配符,作用是匹配任意长度的任意字符(路径分隔符/除外)。

要同时遍历.tar和.csv.gz文件,有几种实用方法:

方法1:用glob原生的多模式匹配(最简洁)

glob支持用{模式1,模式2}的语法同时匹配多种后缀,直接修改路径即可:

for f in glob.glob('{}/{}/Compressed_Files/*.{tar,csv.gz}'.format(path, site_id)):
    # 这里写你的文件处理逻辑

这种方法效率最高,因为glob会在底层直接完成过滤,不需要额外处理。

方法2:用正则表达式过滤(适合复杂规则)

如果需要更灵活的匹配逻辑(比如文件名包含特定字符),可以先获取目录下所有文件,再用正则筛选:

import re
import glob

# 编译正则,匹配以.tar或.csv.gz结尾的文件
match_pattern = re.compile(r'.*\.(tar|csv\.gz)$')
# 先获取目录下所有文件
all_files = glob.glob('{}/{}/Compressed_Files/*'.format(path, site_id))
for f in all_files:
    if match_pattern.search(f):
        # 处理符合条件的文件

方法3:合并两个glob结果(直观易懂)

分别获取两种后缀的文件列表,再用+运算符合并遍历:

tar_files = glob.glob('{}/{}/Compressed_Files/*.tar'.format(path, site_id))
csv_gz_files = glob.glob('{}/{}/Compressed_Files/*.csv.gz'.format(path, site_id))

for f in tar_files + csv_gz_files:
    # 处理文件

这种方法适合需要分别对两种文件做预处理再统一遍历的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 23:45:40