如何防止.get(true,false)语句中出现日志警告,即使它是true而不是false



我正在制作一个很少使用终端进行输出的应用程序。因此,我发现日志库是一种很好的方法,可以帮助调试打印语句中的错误代码。

但是,对于这段代码,特别是底部的.get((语句。。。

def process_variables(self, argument):
data = pd.read_excel(self.url, sheet_name=self.sheet)
data = pd.concat([data.iloc[2:102], data.iloc[107:157]]).reset_index()
fb = data.loc[0:99, :].reset_index()
nfb = data.loc[100:155, :].reset_index()
return {'fb': data.loc[0:99, :].reset_index(),
'nfb': data.loc[100:155, :].reset_index(),
'bi': data.loc[np.where(data['Unnamed: 24'] != ' ')],
'uni': data.loc[np.where(data['Unnamed: 25'] != ' ')],
'fb_bi': fb.loc[np.where(fb['Unnamed: 24'] != ' ')],
'fb_uni': fb.loc[np.where(fb['Unnamed: 25'] != ' ')],
'nfb_bi': nfb.loc[np.where(nfb['Unnamed: 24'] != ' ')],
'nfb_uni': nfb.loc[np.where(nfb['Unnamed: 25'] != ' ')],
}.get(argument, f"{logging.warning(f'{argument} not found in specified variables')}") 

返回此。。。

输出

即使switchcase参数成功,输出也会返回默认参数,因为它确实返回了pandas数据帧。

那么,如果它只是一个字符串而不是一个日志记录字符串方法,我该如何使它只在找不到的时候出现呢。

提前感谢您的帮助:(

Python在调用函数之前,对函数的参数进行求值。这就是为什么不管get()的结果如何,都会调用日志记录函数的原因。另一件事是,你的f-string可能每次都会求值为"None",因为logging.warning()没有返回任何内容,这似乎不是你想要的。您应该使用像这样的常规if语句来处理此问题

variables = {
'fb': data.loc[0:99, :].reset_index(),
...
}
if argument in variables:
return variables[argument]
else:
logging.warning(f'{argument} not found in specified variables')

最新更新