我是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 等数据?
答案 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)
在该日期计算中发生了很多事情,所以如果日期开始以奇怪的格式出现,您可能想要进一步细分