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找到了正確的解決方法。 –