2020年5月19日火曜日

開発環境

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング (Al Sweigart(著)、相川 愛三(翻訳)、オライリージャパン)の第Ⅱ部(処理の自動化)、17章(画像の操作)、17.7(演習プロジェクト)、17.7.2(ハードドライブの写真フォルダを探す)の解答を求めてみる。

コード

#!/usr/bin/env python3
import os
from PIL import Image, UnidentifiedImageError


for foldername, subfolders, filenames in os.walk('/'):
    num_photo_files = 0
    num_non_photo_files = 0
    for filename in filenames:
        if not (filename.endswith('.jpg') or filename.endswith('.png')):
            num_non_photo_files += 1
            continue
        try:
            im = Image.open(os.path.join(foldername, filename))
            width, height = im.size
            if width >= 1000 and height >= 1000:
                num_photo_files += 1
            else:
                num_non_photo_files += 1
        except UnidentifiedImageError as err:
            print(err)
            num_non_photo_files += 1
        except Exception as err:
            print(err)
            num_non_photo_files += 1
    if num_photo_files >= num_non_photo_files and num_photo_files != 0:
        print(foldername)

入出力結果(Zsh、PowerShell、Terminal、Jupyter(IPython))

% ./findphotofolder.py
cannot identify image file '/usr/share/cups/ipptool/gray.jpg'
cannot identify image file '/usr/share/cups/ipptool/testfile.jpg'
cannot identify image file '/usr/share/cups/ipptool/color.jpg'
/Library/Desktop Pictures
/System/Library/Desktop Pictures
…
%

0 コメント:

コメントを投稿