19

引数のヘルプ ドキュメントにも挿入する「%」を含むデフォルト値があります。例えば:

default = "5% foo"
animrender_group.add_argument(
    "--foo",
    default=default,
    help="Foo amount. Default: %s" % default,
)
args = parser.parse_args()

parse_args() での Argparse エラー

[snip]
    args = parser.parse_args()
[snip]"../python2.5/site-packages/argparse.py", line 622, in _expand_help
    return self._get_help_string(action) % params
ValueError: unsupported format character 'O' (0x4f) at index 83
4

3 に答える 3

22

従来のエスケープ文字を試しましたが、うまくいきませんでした。次に、「%」をエスケープ文字として使用することに関するコメントを見つけましたが、これは機能しました。例えば:

default = "5% foo"
foo_group.add_argument(
    "--foo",
    default=default,
    help="Foo amount. Default: %s" % default.replace(r"%", r"%%")),
)
args = parser.parse_args()

すべての「%」を「[パーセント記号]」に置き換える必要がないことをうれしく思います。はぁ。

于 2014-01-16T17:02:03.393 に答える
7

デフォルトを含める別の方法は%(default)s、ヘルプ ラインで a を使用することです。

p=argparse.ArgumentParser()
p.add_argument('--foo', default="5% foo", help="Foo amount. Default: %(default)s")
p.print_help()

生産する

usage: ipython [-h] [--foo FOO]

optional arguments:
  -h, --help  show this help message and exit
  --foo FOO   Foo amount. Default: 5% foo

argparseドキュメントから:

ヘルプ文字列には、プログラム名や引数のデフォルトなどの繰り返しを避けるために、さまざまな書式指定子を含めることができます。利用可能な指定子には、プログラム名、%(prog)s、および add_argument() のほとんどのキーワード引数 (%(default)s、%(type)s など) が含まれます。

于 2014-01-16T17:22:12.883 に答える