4

私はpython2.6.1argparse 0.8でこの問題に直面しています、私は%d説明を助けるために追加する必要があります例えば

import argparse
parser = argparse.ArgumentParser()

parser.add_argument('--range', metavar='range', type=str,
       help='generates a list of host from given range e.g. "host%d.example.com 1 224"')

args = parser.parse_args()

エラーをスローします

$ ./args.py  -h
...
python2.6/site-packages/argparse.py", line 458, in _expand_help
    return action.help % params
TypeError: %d format: a number is required, not dict

私は理解できるので、私は逃げようとしました%例えば

parser.add_argument('--range', metavar='range', type=str,
       help='generates a list of host from given range e.g. "host%%d.example.com 1 224"')

しかし、私はまだ別のエラーが発生します

$ ./args.py  -h
...
python2.6/site-packages/argparse.py", line 252, in format_help
    help = self._root_section.format_help() % dict(prog=self._prog)
TypeError: %d format: a number is required, not dict

だから私はヘルプ出力で%見ることができるように適切に脱出する方法がわかりません%d

4

2 に答える 2

1

argparseは文字列を2回フォーマットし、2つのエラーを出すため、解決策は%:をダブルエスケープすることです。

parser.add_argument('--range', metavar='range', type=str,
       help='generates a list of host from given range e.g. "host%%%%d.example.com 1 224"')

それは4%秒です。

于 2013-02-08T21:55:56.783 に答える
0

%4秒があなたの目を不快にさせる場合のわずかな代替手段。

  parser.add_argument('--range', metavar='range', type=str,
        help=r'generates a list of host from given range e.g. "host%s.example.com 1 224"' % "%%d") 
于 2013-02-08T23:18:57.363 に答える