错误:ValueError:时间数据' N / A'不符合格式'%Y-%m-%d' - Python

时间:2017-02-02 15:52:43

标签: python json amazon-web-services

我是DevOps的大三学生,我需要创建一个从电子表格中返回一些结果的代码,因此我更新了从互联网上找到的代码。

结果:

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()))))

我的问题是,当我为 access_key_1_last_rotated 提供 N / A 等数据时,会返回错误:

ValueError:时间数据' N / A'不符合格式'%Y-%m-%d'

如何自定义代码以忽略 N / A 等数据?

1 个答案:

答案 0 :(得分:0)

一般情况下,我移动

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

超出print语句并将其分配给变量。然后,快速和肮脏,你可以包装在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)

在该日期计算中发生了很多事情,所以如果日期开始以奇怪的格式出现,您可能想要进一步细分