我在使用 argparse 时遇到了一个小问题。我有一个选项 xlim 这是一个情节的 xrange 。我希望能够传递像 -2e-5 这样的数字。但是这不起作用 - argparse 解释这是一个位置参数。如果我这样做 -0.00002 它可以工作: argparse 将其读取为负数。 -2e-3 是否可以读取?
代码如下,我将如何运行它的示例是:
./blaa.py --xlim -2.e-3 1e4
如果我执行以下操作,它会起作用:
./blaa.py --xlim -0.002 1e4
代码:
parser.add_argument('--xlim', nargs = 2,
help = 'X axis limits',
action = 'store', type = float,
default = [-1.e-3, 1.e-3])
虽然我可以让它以这种方式工作,但我真的更希望能够使用科学记数法。有人有什么想法吗?
干杯
最佳答案
我发现的一种解决方法是引用该值,但添加一个空格。也就是说,
./blaa.py --xlim " -2.e-3" 1e4
这样 argparse 不会认为 -2.e-3 是选项名称,因为第一个字符不是连字符破折号,但它仍会正确转换为 float ,因为 float(string) 会忽略离开了。
关于Python Argparse : Issue with optional arguments which are negative numbers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9025204/