2017-09-01 13 views
1

この関数を使用して複数の日付の形式をテストし、エラーが返された場合にすべてのチェックが完了した後にsys.exit(1)を使用して終了します。複数の小切手のいずれかにエラーがあった場合、どのように返ることができますか?関数のtry/exceptブロックでエラーが発生したかどうかを確認

def test_date_format(date_string): 
    try: 
     datetime.strptime(date_string, '%Y%m') 
    except ValueError: 
     logger.error() 

test_date_format("201701") 
test_date_format("201702") 
test_date_format("201799") 

# if any of the three tests had error, sys.exit(1) 
+1

例外を関数呼び出しの外部に伝播する以外は、 –

答えて

0

あなたは、いくつかの指標を返すことができます:すべての

def test_date_format(date_string): 
    try: 
     datetime.strptime(date_string, '%Y%m') 
     return True 
    except ValueError: 
     logger.error() 
     return False 

error_happened = False # Not strictly needed, but makes the code neater IMHO 
error_happened |= test_date_format("201701") 
error_happened |= test_date_format("201702") 
error_happened |= test_date_format("201799") 

if error_happened: 
    logger.error("oh no!") 
    sys.exit(1) 
0

まず、あなたがリスト/タプルとしてdatestringを持っていると仮定することができます。すなわちdatestring_list = ["201701", "201702", "201799"]です。コードスニペットは次のとおりです。

datestring_list = ["201701", "201702", "201799"] 

def test_date_format(date_string): 
    try: 
     datetime.strptime(date_string, '%Y%m') 
     return True 
    except ValueError: 
     logger.error('Failed for error at %s', date_string) 
     return False 

if not all([test_date_format(ds) for ds in datestring_list]): 
    sys.exit(1) 
関連する問題