遵循Python延迟日志格式,但pylint仍然显示(日志记录不是延迟)消息
我正在记录一些信息消息,希望确保遵守政治公众人物标准。派林说这条线:遵循Python延迟日志格式,但pylint仍然显示(日志记录不是延迟)消息,python,unix,logging,formatting,pylint,Python,Unix,Logging,Formatting,Pylint,我正在记录一些信息消息,希望确保遵守政治公众人物标准。派林说这条线: LOG.info('Directories have been made in /home/bushbak2/projects/'+ 'system_file_audit/%s/', manu) 未遵循python的延迟日志记录格式。 可能是因为这条线一直延伸下去吗 这是我从派林得到的信息: auto_audit.py:157:8: W1201: Use lazy % for
LOG.info('Directories have been made in /home/bushbak2/projects/'+
'system_file_audit/%s/', manu)
未遵循python的延迟日志记录格式。
可能是因为这条线一直延伸下去吗
这是我从派林得到的信息:
auto_audit.py:157:8: W1201: Use lazy % formatting in logging functions (logging-not-lazy)
为什么派林仍然提出这个信息?我是否没有适当地遵循政治公众人物标准
干杯,Brendan您的问题来自表达式中的
+
。Pylint将其视为一个字符串连接,因此建议您惰性地进行此连接
您可以通过删除+
来修复它:
LOG.info('已在/home/bushbak2/projects/中创建目录'
“系统文件审计/%s/”,手动)
两个字符串之间的+
问题是添加了一个add操作,该操作必须在调用LOG.debug之前在运行时进行评估
如果即使没有为程序设置调试日志标志,也必须经常计算这一行,则这可能是一个性能问题
这是logging.debug的抽象语法树(“这是“+”测试%s”,123)
:
如您所见,函数调用的第一个参数始终有一个add操作
另一方面,如果我们使用logging.debug(“这是一个测试%s”,123)
(用空格代替+
符号)。python编译器生成另一个AST:
f字符串会发生什么?很多人(包括我)都喜欢python f字符串。如果我们传递一个f字符串,结果类似于带加号的字符串
logging.debug(“这是一个测试{123}”)
的AST显示python必须在函数调用之前执行字符串操作: