【发布时间】:2020-01-09 20:10:54
【问题描述】:
假设我有这些文件
/home/user/one/two/abc.txt
/home/user/one/three/def.txt
/home/user/one/four/ghi.txt
我正在尝试使用pathlib 模块递归查找ghi.txt。我试过了:
p = '/home/user/'
f = Path(p).rglob(*i.txt)
但我获得文件名的唯一方法是使用列表推导:
file = [str(i) for i in f]
实际上只工作一次。重新运行上面的命令会返回一个空列表。
我决定学习pathlib,因为显然这是社区推荐的,但不是:
file = glob.glob(os.path.join(p,'**/*i.txt'),recursive=True)
更直接?
【问题讨论】:
-
显然您已经找到了两种方法来解决您喜欢的问题。你有什么问题?
-
它只能工作一次,大概是因为
rglob()返回了一个生成器,它会被你的理解力耗尽。f = tuple(Path(p).rglob(*i.txt))会让你循环多次,如果你出于某种原因需要这样做