6

を使用argparseして、最初の不明な引数で引数の解析を停止することは可能ですか?

私は2つのほぼ解決策を見つけました。

  1. parse_known_args、ただし、これにより、最初の不明な引数の後に既知のパラメーターを検出できます。
  2. nargs=argparse.REMAINDER、ただし、これは最初の非オプション引数まで解析を停止しません。これに先行するオプションが認識されない場合は、エラーが発生します。

私は何かを見落としましたか?使用argparseする必要がありますか?

4

2 に答える 2

2

私はargparse自分自身を使用していません(コード2.6との互換性を維持する必要があります)が、ドキュメントを見ると、何も見逃していないと思います。

だから私はなぜあなたがargparse引数の解析をやめたいのか、そしてなぜ--疑似引数がその仕事をしないのか疑問に思う必要があります。ドキュメントから:

で始まる必要があり、負の数のように見えない位置引数がある場合は、それ以降のすべてが位置引数であることを'-'示す疑似引数'--'を挿入できます。parse_args()

>>> parser.parse_args(['--', '-f'])
Namespace(foo='-f', one=None)
于 2011-07-14T02:10:16.567 に答える
0

これを行う1つの方法は、すべての状況で完全であるとは限りませんが、getopt代わりに使用することです。

例えば:

import sys
import os
from getopt import getopt


flags, args = getopt(sys.argv[1:], 'hk', ['help', 'key='])

for flag, v in flags:
    if flag in ['-h', '--help']:
        print(USAGE, file=sys.stderr)
        os.exit()
    elif flag in ['-k', '--key']:
        key = v

オプション以外の引数にgetopt遭遇すると、引数の処理を停止します。

于 2021-07-17T05:38:02.590 に答える