2016-10-03 128 views
0

是否可以附加pathlib.Path生成器或將兩個Path組合起來?將路徑附加到路徑

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

這是因爲Path.glob返回generator,即當next被稱爲具有完全不知道append ING是什麼,返回值的對象。

你有兩個選擇這裏,如果你需要一個列表包裹路徑的list電話:(即使extend可能是你在這裏後在做什麼)

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

這當然會擊敗發電機的目的。

所以,我建議使用類似chain並創建一個發電機,將在同一時間將它們組合和收益率從他們一個:按要求

from itertools import chain 

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

然後再遍歷paths,同時保持內存佔用量下降。