2015-10-11 14 views
14

ロガー機能の略語の場合、Pylintは約Invalid constant name "myprint" (invalid-name)に文句を言います。Pylintメッセージ:無効な定数名(無効な名前)

# 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 
+0

サンプルログファイルを共有できますか?私はテストをしたい。 – mertyildiran

+0

類似した質問と回答:https://stackoverflow.com/questions/10815549/pylint-showing-invalid-variable-name-in-output –

答えて

13

myprintからmain()の定義を移動することは、メッセージを抑制する1つの方法です。

per Pylint docs for invalid-name (C0103)とすると、定数の名前は実質的に大文字である必要があります。したがって、MYPRINTという名前はメッセージを生成しません。

コメントを行に追加すると、メッセージは生成されません。

log = get_logger() # pylint: disable=locally-disabled, invalid-name 

また、プロジェクトには.pylintrcに以下を追加してください。これは私が好まれる解決策です。あなたが有効であると無効な名前(だけではなく、単一の名前)のパターン全体を望んでいた場合

[BASIC] 
good-names=log 

、あなたはそれ以外の場合は同じセクションにconst-rgxなどをカスタマイズすることができます。先にリンクしたパイリントのページを参照してください。

最後に、アプリケーションが小さく独立している場合は、代わりにlogging.warn('test')などのルートロガーを構成して使用することができます。

2

問題は、モジュールレベルでmyprintを定義しているということです。

メインで定義した場合、このエラーはpylintからは得られません。

関連する問題