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

如何在Python中使用rglob()搜索文件时显示计数或进度?

使用Rich实现JSON文件搜索的进度显示

方案一:实时计数器(显示已找到文件数)

利用rglob()的生成器特性,遍历过程中实时更新计数,用Rich的Console避免刷屏:

from pathlib import Path
from rich.console import Console

console = Console()
count = 0
files = []

# 用expanduser解析~路径
for file in Path("~/foo/bar/").expanduser().rglob("*.json"):
    files.append(file)
    count += 1
    # \r 回到行首覆盖原有内容,实现实时更新
    console.print(f"\r已找到 {count} 个JSON文件", end="")

console.print(f"\n搜索完成,共找到 {count} 个JSON文件")

方案二:预估进度条(基于已知总数)

已知文件总数约28k,用Rich的Progress组件实现带预估的进度条,后续总数增长时只需调整预估数值:

from pathlib import Path
from rich.progress import Progress

# 预估总文件数,可根据实际增长情况调整
ESTIMATED_TOTAL = 28000

files = []
with Progress() as progress:
    # 创建进度任务,设置描述和总进度
    search_task = progress.add_task("[green]正在搜索JSON文件...", total=ESTIMATED_TOTAL)
    for file in Path("~/foo/bar/").expanduser().rglob("*.json"):
        files.append(file)
        # 每找到一个文件,进度+1
        progress.update(search_task, advance=1)
    # 搜索结束后,更新进度为实际找到的数量,确保进度条显示完整
    progress.update(search_task, completed=len(files), description="[green]搜索完成!")

print(f"最终找到 {len(files)} 个JSON文件")

注意事项

  • 必须用expanduser()解析~路径,否则Path无法正确识别用户目录
  • 若后续文件总数增长明显,直接修改ESTIMATED_TOTAL为更接近的预估数值即可
  • 两个方案都避免了直接转list()导致的一次性加载,边遍历边统计更高效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 22:42:08