feat: 別対応の修正内容を反映
This commit is contained in:
parent
9280a7cdab
commit
7ccbe2183d
@ -84,14 +84,18 @@ def check(bucket_name, target_data_source, target_file_name, settings_key, log_i
|
|||||||
work_obj = s3_resource.Object(bucket_name, work_key)
|
work_obj = s3_resource.Object(bucket_name, work_key)
|
||||||
work_response = work_obj.get()
|
work_response = work_obj.get()
|
||||||
work_data = io.TextIOWrapper(io.BytesIO(work_response["Body"].read()), encoding=settings_list[SETTINGS_ITEM["charCode"]], newline=LINE_FEED_CODE[settings_list[SETTINGS_ITEM["lineFeedCode"]]])
|
work_data = io.TextIOWrapper(io.BytesIO(work_response["Body"].read()), encoding=settings_list[SETTINGS_ITEM["charCode"]], newline=LINE_FEED_CODE[settings_list[SETTINGS_ITEM["lineFeedCode"]]])
|
||||||
work_header_list = []
|
work_csv_row = []
|
||||||
for line in csv.reader(work_data, quotechar=convert_quotechar(settings_list[SETTINGS_ITEM["quotechar"]]), delimiter=settings_list[SETTINGS_ITEM["delimiter"]]):
|
for i, line in enumerate(csv.reader(work_data, quotechar=convert_quotechar(settings_list[SETTINGS_ITEM["quotechar"]]), delimiter=settings_list[SETTINGS_ITEM["delimiter"]])):
|
||||||
work_header_list = line
|
# ヘッダあり、かつ、1行目の場合
|
||||||
|
if int(settings_list[SETTINGS_ITEM["headerFlag"]]) == 1 and i == 0:
|
||||||
|
work_csv_row.append(line)
|
||||||
|
continue
|
||||||
|
work_csv_row.append(line)
|
||||||
break
|
break
|
||||||
|
|
||||||
# ② C-0のデータ件数チェックを開始する
|
# ② C-0のデータ件数チェックを開始する
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-02 - C-0のチェックを開始します')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-02 - C-0のチェックを開始します')
|
||||||
if is_empty_file(work_header_list, settings_list):
|
if is_empty_file(work_csv_row, settings_list):
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-03 - 投入ファイルが0バイトのため処理を終了します')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-03 - 投入ファイルが0バイトのため処理を終了します')
|
||||||
end(bucket_name, target_data_source, target_file_name, '', log_info, mode)
|
end(bucket_name, target_data_source, target_file_name, '', log_info, mode)
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-04 - 終了処理完了')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-04 - 終了処理完了')
|
||||||
@ -100,16 +104,17 @@ def check(bucket_name, target_data_source, target_file_name, settings_key, log_i
|
|||||||
|
|
||||||
# ③ C-1の項目数チェックを開始する
|
# ③ C-1の項目数チェックを開始する
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-06 - C-1のチェックを開始します')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-06 - C-1のチェックを開始します')
|
||||||
work_header_list_len = len(work_header_list)
|
work_csv_row_item_len = len(work_csv_row[0])
|
||||||
if work_header_list_len == int(settings_list[SETTINGS_ITEM["csvNumItems"]]):
|
if work_csv_row_item_len == int(settings_list[SETTINGS_ITEM["csvNumItems"]]):
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-07 - C-1:正常終了')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-07 - C-1:正常終了')
|
||||||
else:
|
else:
|
||||||
raise CheckError(f'E-CHK-01 - 項目数が一致しません 個別設定ファイル項目数:{settings_list[SETTINGS_ITEM["csvNumItems"]]} 投入データ項目数:{work_header_list_len}')
|
raise CheckError(f'E-CHK-01 - 項目数が一致しません 個別設定ファイル項目数:{settings_list[SETTINGS_ITEM["csvNumItems"]]} 投入データ項目数:{work_csv_row_item_len}')
|
||||||
|
|
||||||
# ④ C-2の項目並び順チェック開始する
|
# ④ C-2の項目並び順チェック開始する
|
||||||
if int(settings_list[SETTINGS_ITEM["headerFlag"]]) == True:
|
if int(settings_list[SETTINGS_ITEM["headerFlag"]]) == True:
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-08 - C-2のチェックを開始します')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-08 - C-2のチェックを開始します')
|
||||||
settings_header_list = settings_list[SETTINGS_ITEM["csvNameItems"]].rstrip().split(',')
|
settings_header_list = settings_list[SETTINGS_ITEM["csvNameItems"]].rstrip().split(',')
|
||||||
|
work_header_list = work_csv_row[0]
|
||||||
for i in range(len(settings_header_list)):
|
for i in range(len(settings_header_list)):
|
||||||
if not settings_header_list[i] == work_header_list[i]:
|
if not settings_header_list[i] == work_header_list[i]:
|
||||||
raise CheckError(f'E-CHK-02 - 項目順序が一致しません {i + 1}番目の項目 個別設定ファイル項目:{settings_header_list[i]} 投入データ項目:{work_header_list[i]}')
|
raise CheckError(f'E-CHK-02 - 項目順序が一致しません {i + 1}番目の項目 個別設定ファイル項目:{settings_header_list[i]} 投入データ項目:{work_header_list[i]}')
|
||||||
@ -126,20 +131,20 @@ def check(bucket_name, target_data_source, target_file_name, settings_key, log_i
|
|||||||
error(bucket_name, target_data_source, target_file_name, log_info)
|
error(bucket_name, target_data_source, target_file_name, log_info)
|
||||||
|
|
||||||
|
|
||||||
def is_empty_file(work_header_list: list, settings_list: list):
|
def is_empty_file(work_csv_row: list, settings_list: list):
|
||||||
"""② C-0のデータ件数チェック
|
"""② C-0のデータ件数チェック
|
||||||
ヘッダ行がある場合は、1行目を読み飛ばして判定する
|
ヘッダ行がある場合は、1行目を読み飛ばして判定する
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
work_header_list (list): CSVファイルの1行目
|
work_csv_row (list): CSVファイルの1行目(ヘッダを含む場合は2行目まで)
|
||||||
settings_list (list): 個別設定ファイルのリスト
|
settings_list (list): 個別設定ファイルのリスト
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: CSVファイルの1行目が0件だった場合はTrue
|
bool: CSVファイルの1行目が0件だった場合はTrue
|
||||||
"""
|
"""
|
||||||
has_header = settings_list[SETTINGS_ITEM["headerFlag"]]
|
has_header = int(settings_list[SETTINGS_ITEM["headerFlag"]]) == 1
|
||||||
# ヘッダのみのファイルも0バイトファイルをみなす
|
# ヘッダのみのファイルも0バイトファイルをみなす
|
||||||
if has_header:
|
if has_header:
|
||||||
return len(work_header_list[1:]) == 0
|
return len(work_csv_row[1:]) == 0
|
||||||
|
|
||||||
return len(work_header_list) == 0
|
return len(work_csv_row) == 0
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user