argparseの使用に関して助けが必要です。私が達成したいのは、引数を1つだけ渡す必要があるということです。これは、次のいずれかになります--k, --r, --b, --p,(ignore the rest)
。引数の数が1でない場合は、「使用法」情報を出力して終了します。また、プログラムは、対応するオブジェクトを作成するために、どのフラグが渡されるかを知る必要があります。何度か試しましたが、うまくいきません。誰かにヒントを教えてもらえますか?ありがとう。
2 に答える
4
それを達成するために使用する必要があるのは、相互に排他的なグループです。
import argparse
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()
group.add_argument('-k', action='store_true')
group.add_argument('-r', action='store_true')
group.add_argument('-b', action='store_true')
group.add_argument('-p', action='store_true')
parser.parse_args()
以下の例でわかるように、相互に排他的なグループ内の1つのオプションのみが同時に許可されます。
$ python test.py -k -r -b -p
usage: test.py [-h] [-k | -r | -b | -p]
test.py: error: argument -r: not allowed with argument -k
argparse.Namespace
渡されたフラグを確認するには、メソッドによって返されるオブジェクトを確認するだけですparse_args
(渡されたフラグはに設定されますTrue
)。
于 2011-12-10T23:12:33.847 に答える
3
全く使わないのはどうargparse
ですか?本当に必要ではないようです。
if len(sys.argv) != 2:
print_usage()
arg = sys.argv[1]
if arg not in ["--k", "--r", "--b", "--p"]:
print_usage()
# Do whatever you want with arg
于 2011-12-10T23:01:28.920 に答える