2017-02-02 54 views
0

我是DevOps的一名大三學生,我需要創建一個從電子表格返回一些結果的代碼,因此我更新了從互聯網上找到的這段代碼。錯誤:ValueError:時間數據'N/A'與格式'%Y-%m-%d'不匹配 - Python

結果:

Result code without error

#!/usr/bin/env python 
from sys import stdin 
import datetime 
import json 
import base64 
from datetime import date, timedelta 

dt = date.today() 

report = json.loads(stdin.read()) 
table = base64.b64decode(report["Content"]).splitlines() 
head = table[0].split(",") 
table = table[1:] 

for row in iter(table): 
    user = dict(zip(head, row.split(","))) 
    print ("\033[1m USER: \033[0m \t %s \033[1m MFA_ACTIVE: \033[0m %s \033[1m PASSWORD ENABLED: \033[0m %s \033[1m KEY ROTATED: \033[0m %s \n") % (user["user"], user["mfa_active"], user["password_enabled"], ((dt-(datetime.datetime.strptime((user["access_key_1_last_rotated"]).split('T')[0],"%Y-%m-%d").date())))) 

我的問題是,當我有這樣N/A數據Aaccess_key_1_last_rotated,它返回一個錯誤:

ValueError異常:時間數據'N/A'與格式不匹配'%Y-%m-%d'

如何自定義代碼以忽略數據,如不適用

+2

你能不能在'print'行之前用'try/except'轉換成'datetime'? – roganjosh

+0

另外,你是什麼意思「忽略數據」?如果它有一個「N/A」值,那麼根本不應該打印什麼? – roganjosh

+0

謝謝@roganjosh。在我的電子表格中,數據的格式類似於02/02/2016,在這部分'(( - (datetime.datetime.strptime((user [「access_key_1_last_rotated」])。split('T')[0], 「%Y-%m-%d」)。date()))))'我需要找到今天到2016年2月2日之間的差異,但有時我沒有日期02/02/2016,是N/A。 –

回答

0

一般情況下,我希望移居

((dt-(datetime.datetime.strptime((user["access_key_1_last_rotated"]).split('T')[0],"%Y-%m-%d").date())))) 

出print語句,並將其分配給一個變量。然後,快速和骯髒的,你可以在一個包裹嘗試 - 除了

var my_date = "N/A" 
try: 
    my_date = ((dt-(datetime.datetime.strptime((user["access_key_1_last_rotated"]).split('T')[0],"%Y-%m-%d").date())))) 
except ValueError as v: 
    # print v somewhere 
    # print(v) 
    # or just pass 
    pass 
print ("\033[1m USER: \033[0m \t %s \033[1m MFA_ACTIVE: \033[0m %s \033[1m PASSWORD ENABLED: \033[0m %s \033[1m KEY ROTATED: \033[0m %s \n") % (user["user"], user["mfa_active"], user["password_enabled"], my_date) 

有相當多的事情在該日期計算,所以你可能想打破它進一步下降,如果日期開始出現奇怪的格式

+0

謝謝@Steve Bradshaw,但是因爲我不擅長編程,所以您可以將所有代碼粘貼到修改中? 我是網絡工程師:) –

+0

用上面的(編輯)代碼替換你的打印語句。 –

+0

謝謝@Steve Bradshaw。 我編輯了代碼,但只顯示了一個結果。我不知道是否可以解釋問題,但是我想顯示所有結果,但是顯示的是我沒有N/A的數據,我想在KEY ROTATED中顯示N/A –

相關問題