Skip to content

pythonスニペット

引数処理

import argparse

# コマンド引数で読み込み
parser = argparse.ArgumentParser(description="")
parser.add_argument("arg", help="")
parser.add_argument("--arg1", required=True, help="")
parser.add_argument("--arg2", type=int, default=0, help="")
parser.add_argument("--arg3", default="", help="")
parser.add_argument("--flag", action='store_true')
args = parser.parse_args()
# args = vars(parser.parse_args()) # dict形式に変換
main(**vars(args)) # 引数に展開して関数を呼び出す

# jsonファイルを読み込み
import json
args = json.load(open('settings.json'))

# json形式で引数を保存
import json
with open("settings.json", "w") as f:
    json.dump(args.__dict__, f, indent=4)

tqdm

# iTerm2でtqdmのバーがずれるときは、Preferences > Profiles > Textから
# Ambiguous characters are double-widthのチェックを外す
from tqdm import tqdm

for i in tqdm(range(10000)):
    ...

logger

# (使い方が雑なので注意)
# main
import argparse
import logging
parser = argparse.ArgumentParser()
parser.add_argument("--log", default=None, help="log file path") # 未指定なら標準エラー出力
args = parser.parse_args()
logging.basicConfig(
    format="[%(asctime)s %(levelname)s %(name)s:%(lineno)d] %(message)s",
    datefmt="%Y/%m/%d %H:%M:%S",
    filename=args.log,
    encoding="utf-8",
    level=logging.DEBUG,
)
logger = logging.getLogger(__name__)
logger.info("info message")

# module
from logging import getLogger
logger = getLogger(__name__)
  • 色付け
    • colorlog

pathlib

joblib(並列処理)

from joblib import Parallel, delayed

def func(i):
    return i

result = joblib.Parallel(n_jobs=-1)(joblib.delayed(func)(i) for i in range(10))