目次
ファイル数をチェック
def check_file_cnt(cnt):
"""
既定のファイル数をチェックする関数
"""
f_cnt = len(f_list)
if f_cnt == cnt:
return True
elif f_cnt > cnt:
print(f'ファイル数が多すぎます(既定:{cnt})')
return False
elif f_cnt < cnt:
print(f'ファイル数が不足しています(既定:{cnt})')
return False
else:
print('エラー発生')
return Falseファイル名をチェック
パターン最新
def check_filename(filename: str, *args: str) -> bool:
"""
ファイル名のチェック
"""
if len(args) > 0:
ary = []
for i in range(len(args)):
bool = args[i] in filename
ary.append(bool)
return all(ary)
else:
raise IndexError('ファイル名を照会するキーワードがありません')
filename = '2211_交付金申請.csv'
result = check_filename(filename, "交付金申請", '2211', 'csv')
print(result)パターン前回
- 次の例では、あるファイル(の正規表現)がリストに含まれていればTrueを返す(=
any()) - フォルダにある全ファイル名は事前にリストになっている前提(globと内包表記を利用)
- リストすべてのファイルが、その正規表現パターンになっているかを調べるのであれば、コメント箇所を利用する(=
all())
def check_is_file(fname_regex):
"""
指定したファイル名が、外部のファイル名リストにあればTrueを返す(any)
ファイル名は正規表現で指定する。
使い方:
>>> fname_regex = re.compile(r'sample.*202205.*\.csv')
>>> check_is_file(fname_regex)
True
>>>
"""
for f_name in f_list:
# 合致しない -> 戻り値:None
m = fname_regex.search(f_name)
# f_listのいずれかに合致したらTrue = any()
if m:
return True
print('ファイル名が合致しません。')
return False
"""
# f_listのすべてに合致したらTrue = all()
if not m:
return False
return True
"""実行例文
dir_p = pathlib.Path('/Users/mbp441/Desktop/test')
f_list = [f.name for f in list(dir_p.glob('*'))]
# ファイル名一部、YYMM、拡張子をチェック
regex1 = re.compile(r'AAA.*2205.*\.csv')
regex2 = re.compile(r'BBB.*2205.*\.csv')
regex3 = re.compile(r'CCC.*2205.*\.csv')
chk1 = check_is_file(regex1)
chk2 = check_is_file(regex2)
chk3 = check_is_file(regex3)
# 個々の結果がすべてTrueであればTrue
is_file = all([chk1, chk2, chk3])
if check_file_cnt(3) and is_file:
print("OK")
else:
print("NG")