簡體   English   中英

錯誤:ValueError:時間數據“ N / A”與格式“%Y-%m-%d”不匹配-Python

[英]Error: ValueError: time data 'N/A' does not match format '%Y-%m-%d' - Python

我是DevOps的大三學生,我需要創建一個從電子表格返回一些結果的代碼,因此我更新了從互聯網上找到的代碼。

結果:

結果代碼無錯誤

#!/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()))))

我的問題是,當我擁有access_key_1_last_rotated的 N / A之類的數據時,它返回錯誤:

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

如何自定義代碼以忽略N / A之類的數據?

總的來說,我會搬家

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

退出打印語句,並將其分配給變量。 然后,又快又臟,您可以包裝一個try-except

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)

該日期計算中發生了很多事情,因此,如果日期開始以奇怪的格式出現,您可能需要進一步細分

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM