簡體   English   中英

如何使用OptionParser制作自定義命令行界面?

[英]How to make a custom command line interface using OptionParser?

我正在使用optparse模塊中的OptionParser來解析使用raw_input()獲得的命令。

我有這些問題。

1.)我使用OptionParser解析此輸入,例如。 (獲取多個參數)

my prompt> -a foo -b bar -c spam eggs 

我通過在add_option()中將action ='store_true'設置為'-c'來完成此操作,現在是否存在另一個帶有多個參數的選項,例如-dxyz,那么如何知道哪個參數來自哪個選項? 同樣如果必須再次解析其中一個參數,例如

my prompt> -a foo -b bar -c spam '-f anotheroption'

2.)如果我想做這樣的事情..

my prompt> -a foo -b bar 
my prompt> -c spam eggs 
my prompt> -d x y z 

現在,每個條目都不得影響前一個命令設置的其他選項。 如何做到這些?

對於第2部分:您需要為處理的每一行提供一個新的OptionParser實例。 並查看用於編寫這樣的命令循環的cmd模塊

您還可以使用nargs選項屬性來解決#1,如下所示:

parser = OptionParser()
parser.add_option("-c", "", nargs=2)
parser.add_option("-d", "", nargs=3)

optparse通過要求參數始終具有相同數量的參數 (即使該數字為0)來解決#1,不允許使用可變參數參數:

通常,給定的選項可以帶參數,也可以不帶參數。 許多人想要“可選選項參數”功能,這意味着某些選項在看到參數時將帶有參數,而在沒有看到時將不帶參數。 這有點爭議,因為它使解析模棱兩可:如果“ -a”帶有一個可選參數,而“ -b”完全是另一個選項,那么我們如何解釋“ -ab”呢? 由於存在這種歧義,因此optparse不支持此功能。

您可以通過不重用parse_args先前的值來解決#2,因此它將創建一個新的values對象而不是update。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM