Raf*_*afe 13 python string-formatting argparse percent-encoding
我有一个包含'%'的默认值,我也将其插入到我的参数的帮助文档中.例如:
default = "5% foo"
animrender_group.add_argument(
"--foo",
default=default,
help="Foo amount. Default: %s" % default,
)
args = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
Raf*_*afe 12
我曾尝试过传统的逃脱角色,但这种角色无效.然后我发现了一个关于使用'%'作为转义字符的评论,这很有效.例如:
default = "5% foo"
foo_group.add_argument(
"--foo",
default=default,
help="Foo amount. Default: %s" % default.replace(r"%", r"%%")),
)
args = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)
我很高兴我不需要用'[百分号]'替换所有'%'.哈.
包含默认值的另一种方法是%(default)s在帮助行中使用a .
p=argparse.ArgumentParser()
p.add_argument('--foo', default="5% foo", help="Foo amount. Default: %(default)s")
p.print_help()
Run Code Online (Sandbox Code Playgroud)
哪个产生
usage: ipython [-h] [--foo FOO]
optional arguments:
-h, --help show this help message and exit
--foo FOO Foo amount. Default: 5% foo
Run Code Online (Sandbox Code Playgroud)
从argparse文档:
帮助字符串可以包含各种格式说明符,以避免重复诸如程序名称或参数默认值之类的事情.可用的说明符包括程序名,%(prog)和add_argument()的大多数关键字参数,例如%(默认)s,%(类型)s等:
如果您没有默认值并且只想在帮助消息中使用百分号,请添加另一个%来转义它:
import argparse
p=argparse.ArgumentParser()
p.add_argument('--foo', help="Foo is always 100%%!")
p.print_help()
Run Code Online (Sandbox Code Playgroud)
这给你:
usage: [-h] [--foo FOO]
optional arguments:
-h, --help show this help message and exit
--foo FOO Foo is always 100%!
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2340 次 |
| 最近记录: |