1. ホーム
  2. python

[解決済み] Argparseです。x' が存在する場合は 'y' が必要です。

2022-05-16 02:46:58

質問

以下のような要件があります。

./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.')

どのように解決するのですか?

いいえ、argparse には、相互に を含む を作るオプションはありません。

最もシンプルな対処法は、次のようになります。

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