Argparse: 'x' が存在する場合、引数 'y' が必要です 質問する

Argparse: 'x' が存在する場合、引数 'y' が必要です 質問する

次のような要件があります:

./xyifier --prox --lport lport --rport rport

引数proxについては、action='store_true'を使用して、それが存在するかどうかを確認します。引数は必要ありません。ただし、--proxが設定されている場合は、必要とするrport と lport も同様です。カスタム条件コーディングを記述せずに、argparse を使用してこれを行う簡単な方法はありますか。

その他のコード:

non_int.add_argument('--prox', action='store_true', help='Flag to turn on proxy')
non_int.add_argument('--lport', type=int, help='Listen Port.')
non_int.add_argument('--rport', type=int, help='Proxy port.')

ベストアンサー1

いいえ、argparseには相互に行うオプションはありません包括的オプションのセット。

これに対処する最も簡単な方法は次のとおりです。

if args.prox and (args.lport is None or args.rport is None):
    parser.error("--prox requires --lport and --rport.")

実際には、機能強化の提案を含むオープン PR がすでに存在します。python の最新バージョンは 55797 です。

おすすめ記事