Python Argparse:带有负数的可选参数的问题 - python

我在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])

虽然我可以使它以这种方式工作,但我确实更希望能够使用科学计数法。有人有主意吗?

干杯

参考方案

正如评论所指出的那样,问题在于-前缀被解析为选项而不是参数。解决方法之一是使用 prefix_chars 参数更改用于选项的前缀:

#!/usr/bin/python
import argparse

parser = argparse.ArgumentParser(prefix_chars='@')
parser.add_argument('@@xlim', nargs = 2,
                  help = 'X axis limits',
                  action = 'store', type = float,
                  default = [-1.e-3, 1.e-3])
print parser.parse_args()

输出示例:

$ ./blaa.py @@xlim -2.e-3 1e4
Namespace(xlim=[-0.002, 10000.0])

编辑:或者,您可以继续使用-作为分隔符,将xlim作为单个值传递,并使用type中的函数来实现自己的解析:

#!/usr/bin/python
import argparse

def two_floats(value):
    values = value.split()
    if len(values) != 2:
        raise argparse.ArgumentError
    values = map(float, values)
    return values

parser = argparse.ArgumentParser()
parser.add_argument('--xlim', 
                  help = 'X axis limits',
                  action = 'store', type=two_floats,
                  default = [-1.e-3, 1.e-3])
print parser.parse_args()

输出示例:

$ ./blaa.py --xlim "-2e-3 1e4"
Namespace(xlim=[-0.002, 10000.0])

在返回'Response'(Python)中传递多个参数 - python

我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…

Python exchangelib在子文件夹中读取邮件 - python

我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…

argparse参数顺序 - python

我有一点问题。我使用argparse解析我的参数,并且运行良好。要拥有args,我这样做:p_args = parser.parse_args(argv) args = dict(p_args._get_kwargs()) 但是p_args的问题是我不知道如何根据命令行中的位置来排列这些参数,因为这是命令。那么,是否有可能在命令行中将参数放在元组/列表/有序…

Python GPU资源利用 - python

我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…

如何处理可能是一个值或多个值的输入参数? - python

我正在使用有人编写的来自GitHub的脚本,该脚本是为命令行设计的。所有示例均显示如下内容:thisscript.py -u 'teepee' -p pword999 -d 8 我想在另一个函数中运行它,在这里我可以像这样使用它:thisscript(username='teepee', password='…