2017-02-15 3 views
1

Я борюсь с результатом метода Path.glob() модуля Pathlib в Python 3.6.Перебирать результаты из Path.glob() (Pathlib)

from pathlib import Path 

dir = Path.cwd() 

files = dir.glob('*.txt') 
print(list(files)) 
>> [WindowsPath('C:/whatever/file1.txt'), WindowsPath('C:/whatever/file2.txt')] 

for file in files: 
    print(file) 
    print('Check.') 
>> 

Очевидно, Глоб найденных файлов, но для петли не выполняется. Как я могу просмотреть результаты поиска pathlib-glob?

+2

Итератор получил потребляются в 'списке (файлы)', вы должны сделать 'файлы = dir.glob ('*. TXT')' снова –

ответ

4
>>> from pathlib import Path 
>>> 
>>> dir = Path.cwd() 
>>> 
>>> files = dir.glob('*.txt') 
>>> 
>>> type(files) 
<class 'generator'> 

Здесь files является generator, который может быть прочитан только один раз, а затем истощаются. Итак, когда вы попытаетесь прочитать его второй раз, у вас его не будет.

>>> for i in files: 
...  print(i) 
... 
/home/ahsanul/test/hello1.txt 
/home/ahsanul/test/hello2.txt 
/home/ahsanul/test/hello3.txt 
/home/ahsanul/test/b.txt 
>>> # let's loop though for the 2nd time 
... 
>>> for i in files: 
...  print(i) 
... 
>>> 
+0

я получил, спасибо. Я не знал, что генераторы «истощены» или «поглощены». Я углубится в него, чтобы понять больше. Однако мой код работает сейчас. Спасибо за вашу помощь (также благодаря Моисею)! – keyx

Смежные вопросы