Source code for AutomateTheBoringStuff.Ch17.Projects.P2_findPhotoFolders

#! python3
"""Find photo folders

This program identifies all folders in ``/home/jose`` where over 50%
of the files are images of a specified size.

"""


[docs]def main(): import os from PIL import Image FOLDER = '/home/jose' EXTENSIONS = ['.png', '.jpg', '.jpeg'] MIN_SIZE = 500 for foldername, subfolders, filenames in os.walk(FOLDER): photo_files = 0 non_photo_files = 0 for filename in filenames: # Check if file extension isn't .png or .jpg. if not filename.lower().endswith(tuple(EXTENSIONS)): non_photo_files += 1 continue # skip to next filename # Open image file using Pillow. try: image = Image.open(os.path.join(foldername, filename)) width, height = image.size except OSError as instance: print(f'OSError: {instance}') continue # skip to next filename # Check if width & height are larger than 500. if width > MIN_SIZE and height > MIN_SIZE: # Image is large enough to be considered a photo. photo_files += 1 else: # Image is too small to be a photo. non_photo_files += 1 # If more than half of files were photos, # print the absolute path of the folder. total_files = photo_files + non_photo_files if photo_files > total_files / 2: print(f'Found folder: {foldername}')
if __name__ == '__main__': main()