Pylint在使用记录器函数的速记的情况下抱怨Invalid constant name "myprint" (invalid-name)
。
# import
from utils import get_logger
LOGFILE = '6_evaluator.log'
myprint = get_logger(LOGFILE)
def main():
# some stuff
myprint('log log')
if __name__ == '__main__':
main()
这可以在不调整pylint配置的情况下完成吗?
如果需要,这里是get_logger
的定义:
import logging
import os
def get_logger(logfile):
""" Return a logger that log on stdout and in LOGFILE"""
if os.path.isfile('{}'.format(logfile)):
os.remove('{}'.format(logfile))
logging.basicConfig(filename='{}'.format(logfile), level=logging.INFO)
logger = logging.getLogger('')
logger.addHandler(logging.StreamHandler())
myprint = logger.info
myprint('log file at: {}'.format(logfile))
myprint('Again Hello from logger')
return myprint
将
myprint
的定义移到main()
是抑制消息的一种方法。根据Pylintdocs for ^{} (C0103) ,常量的名称似乎必须是大写的。因此,名称
MYPRINT
不会生成消息。如果将下面的注释追加到行中,则不应生成消息。
或者,在项目的
.pylintrc
中添加以下内容。这是我的首选方案。如果希望整个无效名称模式(而不仅仅是单个名称)有效,则可以在同一节中自定义
const-rgx
等。请参阅前面链接的pylint页面。最后,如果您的应用程序很小且独立,那么您只需配置并使用根日志记录器,例如使用
logging.warn('test')
。问题是您在模块级定义myprint。
如果在main中定义它,就不会从pylint得到这个错误。
相关问题 更多 >
编程相关推荐