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

使用for循环拆分pathlib.glob返回的文件列表时仅首次迭代有结果

问题原因解答

核心根源

Path.glob() 方法返回的是生成器对象,不是静态存储的列表。生成器属于迭代器的一种,核心特性是只能被遍历一次:首次遍历完成后,迭代指针会移动到生成器末尾,后续再遍历这个对象时就不会返回任何元素,自然只能拿到空列表。

你写的代码中files = folder.glob('*dat*') 赋值的就是生成器对象:

  • 第一次循环(筛选.1后缀)时,列表推导式/filter方法会遍历完files里的所有元素,此时生成器已经被耗尽
  • 后续三次循环再遍历files时,已经没有剩余元素可以筛选,所以返回空列表

修复方案

只需要把glob返回的生成器提前转为可重复遍历的列表即可,修改一行代码:

files = list(folder.glob('*dat*'))

修改后每次循环都可以正常遍历所有文件路径,筛选对应后缀的文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 10:36:03