如何防止在 .get(true , false) 语句中出现日志警告,即使它是 true 而不是 false
how to prevent logging warning in a .get(true , false) statement to appear even though it is true and not 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')}")
...return这是...
output
输出 return 是默认参数,即使 switch-case 参数是成功的,因为它确实 return pandas 数据框。
那么我怎样才能让它只在找不到时出现,如果它只是一个字符串而不是一个日志记录字符串方法,它应该出现。
提前感谢您的帮助:)
Python 在调用函数之前计算函数参数的参数。这就是为什么无论 get()
的结果如何,都会调用您的日志记录函数。另一件事是你的 f-string 可能每次都会评估 "None"
因为 logging.warning()
没有 return 任何东西,这看起来不像你想要的那样。你应该只用像
这样的常规 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')
我正在制作一个很少使用终端进行输出的应用程序。所以,我发现日志库是帮助调试错误代码的好方法,正如打印语句所假设的那样。
但是,对于这段代码,特别是底部的 .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')}")
...return这是...
output
输出 return 是默认参数,即使 switch-case 参数是成功的,因为它确实 return pandas 数据框。
那么我怎样才能让它只在找不到时出现,如果它只是一个字符串而不是一个日志记录字符串方法,它应该出现。
提前感谢您的帮助:)
Python 在调用函数之前计算函数参数的参数。这就是为什么无论 get()
的结果如何,都会调用您的日志记录函数。另一件事是你的 f-string 可能每次都会评估 "None"
因为 logging.warning()
没有 return 任何东西,这看起来不像你想要的那样。你应该只用像
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')