web-dev-qa-db-ja.com

Path.glob()(Pathlib)の結果をループする

Python 3.6。

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.')
>>

明らかにglobはファイルを見つけましたが、forループは実行されません。 pathlib-glob-searchの結果をループするにはどうすればよいですか?

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

ここで、filesgeneratorであり、一度だけ読み取ると、使い尽くされます。そのため、2回目に読み込もうとしたときに、それはありません。

>>> 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)
... 
>>> 
17
Ahsanul Haque