4

コマンド ライン インターフェイスを (初めて) 記述しようとしargparseoptparsegetoptますargparsevan Rossum 氏のアドバイスを少し取り入れて、最初のコマンド ライン インターフェイスを次のように接続しました。

def main(argv=None):
    if argv is None:
        argv = sys.argv
    desc = u'some description'
    parser = argparse.ArgumentParser(description=desc)

    parser.add_argument('-s', '--search', help='Search for someone.')
    parser.add_argument('-c', '--do_something_else', help='Do something else.')

    args = parser.parse_args()
    print args

if __name__ == '__main__':
    sys.exit(main())

実行python myscript.py -hすると、次の結果が得られます。

usage: dblp.py [-h] [-s SEARCH] [-c DO_SOMETHING_ELSE]

some description

optional arguments:
  -h, --help            show this help message and exit
  -s SEARCH, --search SEARCH
                        Search for someone.
  -c DO_SOMETHING_ELSE, --do_something_else DO_SOMETHING_ELSE
                        Do something else.

だから私の最初の質問は:なぜと は大文字SEARCHDO_SOMETHING_ELSE書かれているのですか? 2 番目の質問は次のとおりです。Pythonでクリーンで便利なコマンドラインインターフェイスを構築するより良い方法はありますか(私が学ぶことができる素晴らしい現実世界の例)? また、cmd インターフェイスを作成するときに回避すべき落とし穴はありますか?

4

2 に答える 2

7

大文字の項目は単なる値のプレースホルダーです。オプションの宛先から取得されます。metavar=次のパラメータを介して代替プレースホルダーを指定できますadd_argument

http://docs.python.org/dev/library/argparse.html#metavar

于 2011-07-18T01:52:43.530 に答える
2

以下は、私が掘り起こしたいくつかの基本的な argparse リソースです。

argparse に関するいくつかのスライド: http://www.slideshare.net/tisto/argparse-python-command-line-parser

ちょっとした argparse の例: http://www.rutherfurd.net/tag/argparse/

実際の argparse の例を次に示します: https://github.com/harijay/xtaltools/blob/e683fcef6a5ad7394b87382e58d4dce32a85585b/maskconvert.py

落とし穴を避ける限り、いくつかの一般的なユースケースのために書かなければならないボイラープレートコードを減らすための argparse の見栄えの良いラッパーがあります: http://travelingfrontiers.wordpress.com/2010/11/03/simple-python-argparse-ラッパー/

于 2011-07-18T03:44:32.470 に答える