2015-03-03 152 views
2

我正在使用Python 2.7.9並使用argparse模塊作爲命令行參數。我想擴展我的代碼,使其能夠根據用戶在同一命令行中已經提供的參數取得命令行參數。可以說,參數是-a,-b,-c,-d 如果用戶給出-a <value>那麼只有他應該能夠輸入-x <value>並且同樣適用於另一種情況。如果用戶輸入-b <value>那麼只有他應該能夠輸入-y <value>。 任何人都可以請幫助我這個。 謝謝!Python中的迭代命令行參數

+0

我不能夠理解我這樣做怎麼做。我可以使用nargs來使用戶輸入2值,然後是-a,但我不想使用它。 – Vipul 2015-03-03 09:52:14

回答

1

一種方法是解析ARGS使用parse_known_args兩個步驟,例如:

ap = argparse.ArgumentParse() 
ap.add_argument('-a') 
args, unknown = ap.parse_known_args() 
if args.a and '-x' in unknown: 
    ap.add_argument('-x') 
args = ap.parse_args() 
+0

這是行不通的,但我想因爲parse_known_args()任何參數正在接受,我想限制。有沒有辦法可以做到這一點?例如。說這個文件的名稱是abc.py 'python abc.py -a name -w surnane' 該代碼顯示沒有錯誤,但我希望它顯示如-w不被接受的錯誤。 – Vipul 2015-03-04 05:51:42

+0

@Vipul當然,如果你無條件地用'parse_args()'重新解析。我更新了答案中的代碼。 – bereal 2015-03-04 06:17:12

+0

非常感謝@bereal。 'AP = argparse.ArgumentParser() ap.add_argument( ' - 一個') 標誌= 0 指定參數時,未知= ap.parse_known_args() 如果args.a和未知 '-x': ap.add_argument ( '-x') 標誌= 1 ARGS = ap.parse_args() 如果標誌== 1: 打印args.x ap.add_argument( ' - p',需要= TRUE)' 能否請你告訴我這個代碼有什麼問題? – Vipul 2015-03-04 06:36:25

-1

設計命令行參數時,請遵循* nix系統中使用的最佳實踐/標準。

  • 參數的順序並不重要
  • 你在你的程序來檢查強制性論點是否有給予,如果如果你正在尋找例如使用​​沒有給出有用的信息

請參考link

祝你好運!