2016-01-13 61 views
2

我正在使用Python 2.7。我正在编写一个脚本,它使用argparse模块来分析命令行参数。问题是有一个选项-t,--tdiff,指定时间差为+/- HH:MM:SS。使用python argparse模块以连字符开头的参数

我编码相同如下,说文件myprog.py:

parser.add_argument("-t", "--tdiff", 
        action="store", 
        dest="time_diff", 
        help = "Specify time difference as +/-HH:MM:SS.") 

现在我可以运行的程序,如” ./myprog.py -t +02:30:00" ,而不是作为“./myprog.py -t -02:30:00”。

用带连字符的时间差运行prog打印使用情况。请帮助我如何绕过这一点。

+0

您可以使用不同的前缀。 。 。 https://docs.python.org/3/library/argparse.html#prefix-chars – mgilson

回答

1

我不喜欢将选项前缀更改为非标准的东西。以下是我用来处理以连字符开头的选项值的两种方法。

# Use a different symbol for negative times. 
--tdiff ~02:30:00 

# Use this syntax on the command line. 
--tdiff=-02:30:00 
+0

对于'--tdiff = -XX:XX:XX'选项为+1。这也是我会做的(我也不喜欢改变前缀字符)。 – mgilson

+0

是的,我检查。它的工作原理并不需要干预prefix_chars。以下使用方法:'-t = -02:30:00'或'-t =“ - 02:30:00”'或'-t-02:30:00'。 以下不起作用:'-t -02:30:00'或'-t“-02:30:00”'。 –

+0

我会接受这个答案,因为这是接近我所需要的。 –

0

那 - 前缀被解析为一个选项,你可以尝试通过改变用于选择与prefix_chars看看他们的链接页面给出的例子前缀来解决此。

+0

你是完全正确的,报价不会解决它。在文档中进行了一些搜索,并通过使用prefix_chars找到了正确的解决方法。 –

相关问题