Check if a directory contains a file with a given extension

You can use the else block of the for:

for fname in os.listdir('.'):
    if fname.endswith('.true'):
        # do stuff on the file
        break
else:
    # do stuff if a file .true doesn't exist.

The else attached to a for will be run whenever the break inside the loop is not executed. If you think a for loop as a way to search something, then break tells whether you have found that something. The else is run when you didn’t found what you were searching for.

Alternatively:

if not any(fname.endswith('.true') for fname in os.listdir('.')):
    # do stuff if a file .true doesn't exist

Moreover you could use the glob module instead of listdir:

import glob
# stuff
if not glob.glob('*.true')`:
    # do stuff if no file ending in .true exists

Leave a Comment

tech