追加路径的路径

时间:2016-10-03 14:56:45

标签: python python-3.x pathlib

是否可以附加pathlib.Path生成器或合并两个Path s?

from pathlib import Path
paths = Path('folder_with_pdfs').glob('**/*.pdf')
paths.append(Path('folder_with_xlss').glob('**/*.xls'))

通过此尝试,您将获得:

AttributeError: 'generator' object has no attribute 'append'

1 个答案:

答案 0 :(得分:1)

那是因为Path.glob返回一个generator,即一个在调用next时返回值的对象,它完全不知道append是什么。

如果您需要在list电话中填写路径列表,则此处有两个选项:

paths = list(Path('folder_with_pdfs').glob('**/*.pdf'))
paths.append(list(Path('folder_with_xlss').glob('**/*.xls')))

(尽管extend可能就是你在此之后的事情。)

这当然会破坏发电机的目的。

所以,我建议使用类似chain之类的内容并创建一个生成器,将它们组合在一起并逐个产生:

from itertools import chain

p1 = Path('folder_with_pdfs').glob('**/*.pdf')
p2 = Path('folder_with_xlss').glob('**/*.xls')
paths = chain(p1, p2)

然后根据需要迭代paths,同时保持内存占用率下降。