2016-12-21 12 views
0

私はこのように呼ばれるプログラムがあります。Pythonのargparseモジュールの使用

program.py add|remove|show 

をここでの問題は、追加/削除/ showコマンドに応じて、それだけでこのように、可変個の引数を取ることです。任意の引数を取りません1つの唯一の引数と「ショー」コマンドを取ると「削除」コマンドながら

program.py add "a string" "another string" 
program.py remove "a string" 
program.py show 

ので、「追加」コマンドは、2つの文字列の引数を取るだろう。 私はモジュールargparseを使用して、基本的な引数パーサを作成する方法を知っているが、私はそれで多くの経験を持っていないので、私はここから始まっ:

import argparse 
parser = argparse.ArgumentParser() 
parser.add_argument("command", choices=["add", "remove", "show"]) 

しかし、私は継続する方法がわからないとどのようにコマンドに応じてこの機能を実装します。前もって感謝します。あなたはargparseのsubparsersを探している

答えて

2

...

parser = argparse.ArgumentParser(prog='PROG') 
subparsers = parser.add_subparsers(help='sub-command help') 

# create the parser for the "add" command 
parser_add = subparsers.add_parser('add', help='add help') 
# [example] add an argument to a specific subparser 
parser_add.add_argument('bar', type=int, help='bar help') 

# create the parser for the "remove" command 
parser_remove = subparsers.add_parser('remove', help='remove help') 

# create the parser for the "show" command 
parser_show = subparsers.add_parser('show', help='show help') 

この例のコードは、言語reference documentationからの非常に小さな変更で盗まれました。

+0

どのオプションが選択されているかチェックして、対応する変数を取得するにはどうすればよいですか? – xBlackout

+0

@xBlackout - 私がリンクしているドキュメントにもそれに関するアドバイスがあります... "サブコマンドを扱う特に効果的な方法"で始まる文章を検索してください。 tl; dr; 'set_defaults'を使ってどのサブパーザが選択されたかに基づいて名前空間に関数を付けることができるということです。次に、その関数を呼び出して、選択されたサブパーザーに関連付けられたアクションを実行します。 – mgilson