目次
タイムスタンプの取得
- いずれでも取得可能
- エポック秒で取得されるため、datetime形式に変換する
- datetime型とdate型は違う。そのままでは比較できないので注意。
- atime: 最終アクセス日時
- mtime: 最終内容更新日時
- ctime: メタデータの最終更新日時(UNIX) / 作成日時(Windows)
- birthtime: 作成日時(macOSを含むFreeBSD系の一部のUNIXのみ)

ある期間に「作成された」ファイルを探す(GUI)
import pathlib
import datetime
from datetime import date, datetime, timedelta
import PySimpleGUI as sg
import sys
def get_date_gui():
"""GUIから日付を取得.
Parameters
----------------------------
Returns
----------------------------
tg_date: date
"""
try:
date_tuple = sg.popup_get_date()
m, d, y = date_tuple[0], date_tuple[1], date_tuple[2]
tg_date = date(y, m, d)
return tg_date
except Exception as ex:
sg.popup('処理を中断します')
print(ex)
sys.exit()
# GUI利用のため未使用
# def get_date(yyyymmdd:str):
# """yyyymmddからdatetime.dateを取得.
# Paramaters
# ------------------------------
# yyyymmdd: str
# Returns
# ------------------------------
# tg_date: date型(Not datetime型)
# """
# try:
# year, month, day = yyyymmdd[:4], yyyymmdd[4:6], yyyymmdd[6:9]
# tg_date = date(int(year), int(month), int(day))
# return tg_date
# except Exception as ex:
# print(ex)
# sys.exit()
def get_ctime_date(f_p: 'pathlib.Path object'):
"""ファイルパス(pathlibOBJ)からファイル作成日時を取得.
Paramaters
------------------------------
f_p: str
pathlib.Path OBJ
Returns
------------------------------
ctime_date: date型(Not datetime型)
"""
ctime_epoc = f_p.stat().st_ctime
ctime_dt = datetime.fromtimestamp(ctime_epoc)
ctime_date = ctime_dt.date()
return ctime_date
def get_files(dir_p:str):
"""指定フォルダからファイルリストを取得"""
try:
if pathlib.Path(dir_p).exists:
file_list = list(pathlib.Path(dir_p).glob('./*.*'))
print(f'ファイルの総数:{len(file_list)}')
return file_list
except Exception as ex:
print('パスが違います')
sys.exit()
else:
print('パスが存在しません')
sys.exit()
def get_target_file_list(dir_p:str, start, end):
"""指定した日付の条件に合致するファイルリストを取得.
Paramaters
------------------------------
dir_p: str
指定フォルダのパス(文字列)
start: date
開始日付(date型)
end: date
終了日付(date型)
Returns
------------------------------
target: list
条件に合致するファイルパス(PathlibOBJ)のリスト
"""
file_list = get_files(dir_p)
if len(file_list) == 0:
sg.popup('終了します:ファイルがありません')
sys.exit()
target = []
for f in file_list:
ctime_date = get_ctime_date(f)
if (start <= ctime_date <= end):
target.append(f)
else:
print('処理中断')
sys.exit()
return target
def main():
f_p = sg.popup_get_folder('フォルダを指定してください(str)?')
start = get_date_gui()
end = get_date_gui()
get_target_file_list(f_p, start, end)
if __name__ == '__main__':
print(main())