是否可以附加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'
答案 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
,同时保持内存占用率下降。