feat: 末尾行はcsvライブラリを使って読み込む。単純にスプリットした場合にカラム内のカンマを判別できないため

This commit is contained in:
shimoda.m@nds-tyo.co.jp 2025-05-14 14:03:35 +09:00
parent 11aee0f43a
commit 72e0a18431

View File

@ -174,11 +174,18 @@ def check(bucket_name, target_data_source, target_file_name, settings_key, log_i
# ファイルの末尾行を取得し、ファイル項目数と比較する
last_line_work_data_bytes = next(reverse_readline_stream(
work_data_bytes, LINE_FEED_CODE[settings_list[SETTINGS_ITEM["lineFeedCode"]]]))
last_line_count = len(
last_line_work_data_bytes.decode(encoding).split(delimiter))
if last_line_count != settings_list[SETTINGS_ITEM["csvNumItems"]]:
# 区切り文字例えばカンマを文字とデリミタで区別できるように、csvリーダーで読む
last_line_separated_data = [
row for row in csv.reader(
io.TextIOWrapper(io.BytesIO(last_line_work_data_bytes)),
quotechar=convert_quotechar(
settings_list[SETTINGS_ITEM["quotechar"]]),
delimiter=delimiter)
]
last_line_count = len(last_line_separated_data[0])
if last_line_count != int(settings_list[SETTINGS_ITEM["csvNumItems"]]):
raise CheckError(
f'E-CHK-03 - 投入データ末尾の項目数が一致しません 個別設定ファイル項目数:{settings_list[SETTINGS_ITEM["csvNumItems"]]} 投入データ項目数:{last_line_work_data_bytes}')
f'E-CHK-03 - 投入データ末尾の項目数が一致しません 個別設定ファイル項目数:{settings_list[SETTINGS_ITEM["csvNumItems"]]} 投入データ項目数:{last_line_count}')
print(
f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {INFO} I-CHK-09 - C-3 末尾行項目数チェック 正常終了')