datetimeライブラリで指定したフォーマットの文字列を取得する
ノンプロ研でPython勉強中です。
定期的に取得したいwebサービスのレポートcsvを指定フォルダにSeleniumでダウンロードして、Pathlibを使ってダウンロードファイルのパスを前回取得しました。
前回の記事では、ダウンロードフォルダ内にある検索したいファイル名を直接指定していましたが、本来は、規則性のあるファイル名の条件部分のみを指定して自動的に抽出していきたいです。
今回ターゲットにしているファイルのデフォルトのダウンロード名は、report_2021-08-12.csv といった形式なので、日付部分に該当する条件を指定してダウンロードしたファイルのパスを取得したいと思います。
日付を扱うdatetimeライブラリ
ここで登場するのが日付を扱うdatetimeライブラリです。
ダウンロードファイル名の中には当日の日付がyyyy-MM-dd形式で含まれるので、この部分を検索条件としてファイルパスを取得したいと思います。
そのためには当日の日付を文字列形で取得する必要があります。
import datetime
today = datetime.date.today()
str_today = today.strftime('%Y-%m-%d')
print(str_today)
#2021-08-17
today = datetime.date.today( ) で、現在の日付を返します。
このtodayはdatetimeオブジェクトのままなので、指定したフォーマットの文字列に変換するためにstrftime( )メソッドを使用します。
引数(=カッコの中)に出力したフォーマットを渡すのですが、どういった形式で引数を渡すかは、下記にドキュメントを参考にしてください。
str_today = today.strftime('%Y-%m-%d')
今回は4桁の年代、2桁の月、2桁の日付をハイフンでつないだ形式で出力しました。
list_match = list(o_path.glob('report_' + str_today + '*'))
これで、規定の文字列と組み合わせて、ファイルをピンポイントで検索してパスを取得できるようになりました。