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__)
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))