argparse
moduleを使用してPythonプログラムを作成していますが、プログラムで1つの引数または2つの引数を取ることを許可します。可変長引数
どういう意味ですか?さて、私はMMSメッセージをダウンロード/デコードするプログラムを作成しています。ユーザーは電話番号とMMS-Transaction-IDを提供して、データをダウンロードしたり、既にダウンロードしたMMSデータのシステムからファイルを提供することができます。
私がしたいことは、あなたが2つの引数に入力するか、または1つの引数するか、このようなものです:
./mms.py (phone mmsid | file)
注:phone
は(15555555555
のような)の電話番号となり、mmsid
文字列( MMS-Transaction-ID)とfile
をユーザーのコンピュータ上のファイル
でこれは可能ですか?私はadd_mutually_exclusive_group
を使うことを望んでいましたが、それは私がしたいことをしていないようでした。
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('phone', help='Phone number')
group.add_argument('mmsid', help='MMS-Transaction-ID to download')
group.add_argument('file', help='MMS binary file to read')
これは(required=True
を削除すると、同じエラーになります)エラーを与える:
ValueError: mutually exclusive arguments must be optional
それは私がphone
の代わりに--phone
を使用したいように見えます:
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('--phone', help='Phone number')
group.add_argument('--mmsid', help='MMS-Transaction-ID to download')
group.add_argument('--file', help='MMS binary file to read')
私を実行している場合議論のないプログラム、私は参照してください:
error: one of the arguments --phone --mmsid --file is required
これは私が望むものに近いですが、私はを(--phone --msid) or (--file)
とすることができますか?
[サブコマンド](https://docs.python.org/2/library/argparse.html#sub-commands)を使用できますか? – mgilson
@mgilson:私はそれを見ていませんでした。 「デフォルト」のコマンドを作成する方法はありますか? './mms.py decode file.bin'の代わりに' ./mms.py file.bin'や './mms.py download 15555555555 abcd'の代わりに' ./mms.py 15555555555 abcd'のようにします。 –
それは良い質問です。 -/... – mgilson