Apr-23-2024, 05:40 AM
I agree with Dead_EyE, Path is very useful, because it will work for different operating systems and it has other tricks up its sleeve!
if filename.is_file()
means you won't pick up directories or their contents.from pathlib import Path import sys # mydir looks like: PosixPath('/home/pedro/temp') mydir = Path('/home/pedro/temp') # create a generator: filelist <generator object <genexpr> at 0x7ad729970900> filelist = (filename for filename in mydir.iterdir() if filename.is_file()) # create a list of files file_list = [filename for filename in mydir.iterdir() if filename.is_file()] # have a look at the files for f in filelist: print(f) # use Path to look at the files # need to recreate the generator filelist = (filename for filename in mydir.iterdir() if filename.is_file()) for filename in filelist: print(f"\nfilename: {filename.name}") print(f"file suffix: {filename.suffix}") print(f"full path: {filename.resolve()}") print(f"filepath parts: {filename.parts}")The advantage of the generator is size. Imagine you had millions of files. The list would be very big in memory. The generator is tiny!
sys.getsizeof(filelist) # returns 104 sys.getsizeof(file_list) # returns 472 nearly 5 times bigger than filelist