nokの雑記

技術的な内容にしようと思ったけど無理でした。

Python argparseのhelpでTypeErrorが出るときは

参考:

python argparse issues with the help argument (TypeError: %o format: a number is required, not dict) | Thomas Cokelaer's blog


helpとして設定したテキストに%が混じっているのが原因です.perentと書けばOK

import argparse

parser = argparse.ArgumentParser()

# エラーのもと
parser.add_argument("foo", help="foo % increases the yielding amount")

# これはセーフ
# parser.add_argument("foo", help="foo percent increases the yielding amount")

として,python foo.py -hするとTypeError: %o format: a number is required, not dictとエラーするはずです.

実際,argparseは内部で%フォーマットを使っているらしく(なぜstr.formatしないんだろう),それがエラーのもとになっているようです.