4

Python でオプションの引数を持つコマンド ライン オプションを解析する簡単な方法があるかどうか疑問に思っていました。たとえば、次の 2 つの方法でスクリプトを呼び出せるようにしたいと考えています。

> script.py --foo
> script.py --foo=bar

Python getopt docs から、どちらかを選択する必要があるようです。

4

5 に答える 5

3

optparse標準ライブラリのモジュールはそのままではサポートしていません (このような方法でコマンドライン オプションを使用するのは悪い習慣であるため、サポートすべきではありません)。

@Kevin Horn が指摘したように、モジュールを使用できargparseます (経由でインストールするeasy_install argparseか、単にargparse.pyを取得して の任意の場所に配置しますsys.path)。

#!/usr/bin/env python
from argparse import ArgumentParser

if __name__ == "__main__":
    parser = ArgumentParser(prog='script.py')
    parser.add_argument('--foo', nargs='?', metavar='bar', default='baz')

    parser.print_usage()    
    for args in ([], ['--foo'], ['--foo', 'bar']):
        print "$ %s %s -> foo=%s" % (
            parser.prog, ' '.join(args).ljust(9), parser.parse_args(args).foo)

出力

使用法: script.py [-h] [--foo [バー]]
$ script.py -> foo=baz
$ script.py --foo -> foo=なし
$ script.py --foo バー -> foo=バー
于 2009-09-22T20:28:59.983 に答える
3

また、標準ライブラリには、より強力なオプション パーサーであるoptparseも含まれていることに注意してください。

于 2009-09-22T19:12:52.763 に答える
3

argparse をチェックしてください: http://code.google.com/p/argparse/

特に「nargs」オプション

于 2009-09-22T19:13:41.387 に答える
2

optparse には、これを可能にするオプションはありません。しかし、それを行うためにそれを拡張することができます:

http://docs.python.org/library/optparse.html#adding-new-actions

于 2009-09-22T19:15:23.637 に答える
1

optparseパッケージを使用します。

于 2009-09-22T19:13:32.450 に答える