首先,如果您只需编辑
convertMillis
要返回的函数
np.nan
如果做不到这一点,请将函数包装在另一个函数中,而不是raisingor:
def convertMillisOrNan(millis):
try:
return convertMillis(millis)
except:
return np.nan
newaccsla_comp = convertMillisOrNan(issues.fields.customfield_10705.completedCycles[0].remainingTime.millis)
newaccsla_ongoing = convertMillisOrNan(issues.fields.customfield_10705.ongoingCycle.remainingTime.millis)
# etc.
或者,你试图处理的异常可能会更进一步。你总是打电话来
康特米利斯
在
<something>.remainingTime.millis
。如果,比如说,这个领域总是存在的,并且总是有一个
ongoingCycle
,但这并不总是有
remainingTime
属性?然后你可以把那部分插入
try:
,同时还可以进一步简化:
def convertCycle(cycle):
try:
return convertMillis(cycle.remainingTime.millis)
except:
return np.nan
newaccsla_comp = convertCycle(issues.fields.customfield_10705.completedCycles[0])
newaccsla_ongoing = convertCycle(issues.fields.customfield_10705.ongoingCycle)
如果异常更高,例如,如果字段不总是有
循环
尝试:
布洛克,我真的只是在猜测你要处理的是什么
except:
.
当你在做的时候,你真的想
除外:
?这将处理任何异常,而不仅仅是
AttributeError
或
ValueError
或者你所期待的任何例外。
同时,你的存在
jira_hours
重构不起作用,因为您不能只使用
.field
什么时候
field
是包含字符串的变量。解决这个问题的一个方法是:
def get_jira_hours(field):
comp = convertCycle(field.completedCycles[0])
ongoing = convertCycle(field.ongoingCycle)
return comp, ongoing
newaccsla_comp, newaccsla_ongoing = get_jira_hours(issues.fields.customfield_10705)
paymentssla_comp, paymentssla_ongoing = get_jira_hours(issues.fields.customfield_10136)
# etc.
另一种解决方法是
getattr
我将在下面展示。
但你可以做得更好。你真的需要这些都是自变量,而不是,比方说,一个字典里的条目吗?
fieldmap = {
'newaccsla': 'customfield_10136',
'paymentssla': 'customfield_10705',
# etc.
}
values = {}
for fieldname, customfieldname in fieldmap.items():
field = getattr(issues.fields, customfieldname)
comp, ongoing = get_jira_hours(field)
values[f'{fieldname}_comp'] = comp
values[f'{fieldname}_ongoing'] = ongoing
现在,不要用
newaccsla_comp
,你必须使用
values['newaccsla_comp']
。但我怀疑你的代码实际上会做很多代码,你复制和粘贴同样的东西给每个变量,你可以替换为代码,只是在dict上循环。
但是如果你真的需要这些是独立的变量,同样,你也可以通过使用
globals()
或
locals()
而不是
values
.
另一方面,如果要在comp/正在进行的值对上重复自己的操作,只需将这些值对存储在dict中:
values[fieldname] = comp, ongoing
.
另外,因为所有自定义字段名似乎都是
customfield_NNNNN
,您可以通过映射进一步简化
'newaccsla': 10136
等等,然后
getattr(issue.fields, f'customfield_{customfield}')
.