From cda1a79e7ab0be67b8a776752a810a908ebdcc5e Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Fri, 16 Sep 2022 12:47:14 +0900 Subject: [PATCH] =?UTF-8?q?fix:=200=E3=83=90=E3=82=A4=E3=83=88=E5=88=A4?= =?UTF-8?q?=E5=AE=9A=E3=82=92=E4=BF=AE=E6=AD=A3=E3=80=82=E3=83=98=E3=83=83?= =?UTF-8?q?=E3=83=80=E8=A1=8C=E3=81=AF=E5=88=A5=E3=81=AE=E3=81=A8=E3=81=93?= =?UTF-8?q?=E3=82=8D=E3=81=A7=E3=82=82=E4=BD=BF=E3=81=A3=E3=81=A6=E3=81=84?= =?UTF-8?q?=E3=81=9F=E3=81=9F=E3=82=81=E3=80=81=E5=88=A4=E5=AE=9A=E5=87=A6?= =?UTF-8?q?=E7=90=86=E3=81=AE=E3=81=BF=E9=96=A2=E6=95=B0=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (本当は他のも関数化したいけど我慢) --- ecs/dataimport/dataimport/chk.py | 37 +++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/ecs/dataimport/dataimport/chk.py b/ecs/dataimport/dataimport/chk.py index 125dbb2a..9358db30 100644 --- a/ecs/dataimport/dataimport/chk.py +++ b/ecs/dataimport/dataimport/chk.py @@ -1,11 +1,13 @@ -from datetime import datetime -import boto3 -import io import csv +import io import sys +from datetime import datetime + +import boto3 + +from common import convert_quotechar, debug_log from end import end from error import error -from common import debug_log, convert_quotechar # 定数 DIRECTORY_WORK = '/work/' @@ -83,17 +85,13 @@ def check(bucket_name, target_data_source, target_file_name, settings_key, log_i 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_header_list = [] - # ヘッダ行のみのファイルは、0バイトファイル同等とみなす for i, line in enumerate(csv.reader(work_data, quotechar=convert_quotechar(settings_list[SETTINGS_ITEM["quotechar"]]), delimiter=settings_list[SETTINGS_ITEM["delimiter"]])): - if int(settings_list[SETTINGS_ITEM["headerFlag"]]) == True and i == 0: - work_header_list = line - continue - + work_header_list = line break # ② C-0のデータ件数チェックを開始する print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-02 - C-0のチェックを開始します') - if not len(work_header_list): + if is_empty_file(work_header_list, settings_list): 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) print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-04 - 終了処理完了') @@ -126,3 +124,22 @@ def check(bucket_name, target_data_source, target_file_name, settings_key, log_i except Exception as e: print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-CHK-99 - エラー内容:{e}') error(bucket_name, target_data_source, target_file_name, log_info) + + +def is_empty_file(work_header_list: list, settings_list: list): + """② C-0のデータ件数チェック + ヘッダ行がある場合は、1行目を読み飛ばして判定する + + Args: + work_header_list (list): CSVファイルの1行目 + settings_list (list): 個別設定ファイルのリスト + + Returns: + bool: CSVファイルの1行目が0件だった場合はTrue + """ + has_header = settings_list[SETTINGS_ITEM["headerFlag"]] + # ヘッダのみのファイルも0バイトファイルをみなす + if has_header: + return len(work_header_list[1:]) == 0 + + return len(work_header_list) == 0