「Python tips」の版間の差分
提供: Eospedia
| 行17: | 行17: | ||
<pre> | <pre> | ||
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) | parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) | ||
| + | </pre> | ||
| + | |||
| + | == logging == | ||
| + | https://docs.python.org/release/3.8.2/library/logging.html | ||
| + | === ロガー生成スニペット === | ||
| + | <pre> | ||
| + | logging_fmt = logging.Formatter( | ||
| + | '\n[%(asctime)s - %(name)s - %(levelname)s] %(message)s') | ||
| + | logger = logging.getLogger(__name__) | ||
| + | logger.setLevel(logging.DEBUG) | ||
| + | stream_handler = logging.StreamHandler() | ||
| + | stream_handler.setFormatter(logging_fmt) | ||
| + | logger.addHandler(stream_handler) | ||
| + | |||
| + | |||
| + | def set_logger(log_file, is_debug): | ||
| + | if log_file is not None: | ||
| + | log_file_dir = os.path.dirname(log_file) | ||
| + | if log_file_dir: | ||
| + | if not os.path.exists(log_file_dir): | ||
| + | logger.debug('Creating log file directory...') | ||
| + | os.makedirs(log_file_dir) | ||
| + | elif not os.path.isdir(log_file_dir): | ||
| + | logger.error('{} is not a directory.'.format(log_file_dir)) | ||
| + | sys.exit(1) | ||
| + | file_handler = logging.FileHandler(log_file, mode='w') | ||
| + | file_handler.setFormatter(logging_fmt) | ||
| + | logger.addHandler(file_handler) | ||
| + | |||
| + | if not is_debug: | ||
| + | logger.setLevel(logging.INFO) | ||
</pre> | </pre> | ||
2020年7月9日 (木) 03:21時点における版
目次
argparse
https://docs.python.org/release/3.8.2/library/argparse.html
インスタンス化
モジュールdocstring書いといてそれをdescriptionにすると良さげ
parser = argparse.ArgumentParser(description=__doc__)
オプション名の書き方と格納先変数名
https://docs.python.org/release/3.8.2/library/argparse.html#dest
引数個数の指定
https://docs.python.org/release/3.8.2/library/argparse.html#nargs
ヘルプメッセージにデフォルト値を表示する
https://docs.python.org/release/3.8.2/library/argparse.html#argparse.ArgumentDefaultsHelpFormatter
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
logging
https://docs.python.org/release/3.8.2/library/logging.html
ロガー生成スニペット
logging_fmt = logging.Formatter(
'\n[%(asctime)s - %(name)s - %(levelname)s] %(message)s')
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
stream_handler = logging.StreamHandler()
stream_handler.setFormatter(logging_fmt)
logger.addHandler(stream_handler)
def set_logger(log_file, is_debug):
if log_file is not None:
log_file_dir = os.path.dirname(log_file)
if log_file_dir:
if not os.path.exists(log_file_dir):
logger.debug('Creating log file directory...')
os.makedirs(log_file_dir)
elif not os.path.isdir(log_file_dir):
logger.error('{} is not a directory.'.format(log_file_dir))
sys.exit(1)
file_handler = logging.FileHandler(log_file, mode='w')
file_handler.setFormatter(logging_fmt)
logger.addHandler(file_handler)
if not is_debug:
logger.setLevel(logging.INFO)