Loop over results from Path.glob() (Pathlib)

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

Here, files is a generator, which can be read only once and then get exhausted. So, when you will try to read it second time, you won't have it.

>>> 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)
... 
>>> 
Share:
22,864
keyx
Author by

keyx

Updated on February 16, 2020

Comments

  • keyx
    keyx over 4 years

    I'm struggling with the result of the Path.glob() method of the Pathlib module in 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.')
    >>
    

    Evidently, glob found files, but the for-loop is not executed. How can I loop over the results of a pathlib-glob-search?