Python 日付でif文条件分岐する

 日付でif文条件分岐するには、日付型である必要があります。日付型は、正確にはdatetimeオブジェクトで文字列型の場合は次のようにして、strptimeメソッドで型変換してから使用します。

date_str = '2020/01/01' # 日付の文字列
# dateオブジェクトへ変換する。if文で条件分岐するため。
yyyymmdd = datetime.datetime.strptime(date_str, '%Y/%m/%d')
print(type(yyyymmdd)) # 型チェック

 本記事では、日付でif文条件分岐する雛形コードを載せました。本プログラムの仕様を説明します。例えば、下図のように複数の拡張子のファイルがあるフォルダがあります。この中から、.exeファイルで且つ2020年1月1日以降に保存されたファイルを抽出したいとします。

f:id:HK29:20200912140740p:plain

 下図は、本プログラム実行の結果です。2020/01/01以降のexeファイル名を抽出したり、そのファイルパスのリストを作成します。

f:id:HK29:20201020223108p:plain

■本プログラム
 if __name__ == '__main__': 下にあるパラメータでフォルダパスと日付を指定出来ます。

# -*- coding: utf-8 -*-
import os, glob
import datetime

def main():
    # 指定したディレクトリ内のexeファイルをリストで抽出する
    file_list = glob.glob(search_dir + '/*.exe')
    #print(file_list)

    cnt = len(file_list)
    data_list = []
    for i, file_path in enumerate(file_list, start=1):
        #print(i, '/', cnt)
        # ユニックスタイムの取得
        unix_time = os.stat(file_path).st_mtime
        # 日時へ変換
        date_time = datetime.datetime.fromtimestamp(unix_time)
        # 文字列へ変換
        date_time_str = date_time.strftime('%Y/%m/%d')
        # 日付型(スタンプ型)へ変換
        my_time = datetime.datetime.strptime(date_time_str, '%Y/%m/%d')
        # 指定日付以降かどうかで条件分岐
        if my_time >= yyyymmdd:
            print(my_time, os.path.basename(file_path))
            data_list.append(file_path)
        else:
            print(date_time_str)
    print(data_list)


if __name__ == '__main__':
    # パラメータ
    search_dir = 'D:/00_backup/01_new' # 検索するフォルダパスを指定
    date_str = '2020/01/01' # ここに指定した日付以降のファイルを抽出する
    # dateオブジェクトへ変換する。if文で条件分岐するため。
    yyyymmdd = datetime.datetime.strptime(date_str, '%Y/%m/%d')
    print(type(yyyymmdd))

    main()
    print("finished")

(参考リンク)

datetime --- 基本的な日付型および時間型 — Python 3.9.0 ドキュメント

以上

<広告>