を使用argparse
して、最初の不明な引数で引数の解析を停止することは可能ですか?
私は2つのほぼ解決策を見つけました。
parse_known_args
、ただし、これにより、最初の不明な引数の後に既知のパラメーターを検出できます。nargs=argparse.REMAINDER
、ただし、これは最初の非オプション引数まで解析を停止しません。これに先行するオプションが認識されない場合は、エラーが発生します。
私は何かを見落としましたか?使用argparse
する必要がありますか?
を使用argparse
して、最初の不明な引数で引数の解析を停止することは可能ですか?
私は2つのほぼ解決策を見つけました。
parse_known_args
、ただし、これにより、最初の不明な引数の後に既知のパラメーターを検出できます。nargs=argparse.REMAINDER
、ただし、これは最初の非オプション引数まで解析を停止しません。これに先行するオプションが認識されない場合は、エラーが発生します。私は何かを見落としましたか?使用argparse
する必要がありますか?
私はargparse
自分自身を使用していません(コード2.6との互換性を維持する必要があります)が、ドキュメントを見ると、何も見逃していないと思います。
だから私はなぜあなたがargparse
引数の解析をやめたいのか、そしてなぜ--
疑似引数がその仕事をしないのか疑問に思う必要があります。ドキュメントから:
で始まる必要があり、負の数のように見えない位置引数がある場合は、それ以降のすべてが位置引数であることを
'-'
示す疑似引数'--'
を挿入できます。parse_args()
>>> parser.parse_args(['--', '-f'])
Namespace(foo='-f', one=None)
これを行う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
遭遇すると、引数の処理を停止します。