3

Pythonには、ボイラープレートを解析する多くの引数なしで、CLIユーティリティを簡単かつ迅速に作成する方法がありますか?

Perl 6では、MAINサブの署名はコマンドライン引数を自動的に解析します。

多くの定型文なしでPythonで同様のことを行う方法はありますか?ない場合、それを行うための最良の方法は何でしょうか?いくつかの内省を実行し、正しいことを行う関数デコレータを考えています。まだそのようなものがないのなら、私は以下のようなことを考えています。これは良い考えですか?

@MagicMain
def main(one, two=None, *args, **kwargs):
    print one # Either --one or first non-dash argument
    print two # Optional --arg with default value (None)
    print args # Any other non-dash arguments
    print kwargs # Any other --arguments

if __name__ == '__main__':
    main(sys.argv)
4

6 に答える 6

5

Bakerライブラリには、メソッドシグネチャからargパーサーを「自動的に」作成するための便利なデコレータがいくつか含まれています。

例えば:

@baker.command
def test(start, end=None, sortby="time"):
  print "start=", start, "end=", end, "sort=", sortby

$ script.py --sortby name 1
start= 1 end= sortby= name
于 2010-10-04T20:30:16.650 に答える
2

ボイラープレートを解析しているとあなたが考えていることはよくわかりません。「現在の」アプローチは、Python用のargparseシステムを使用することです。古いシステムはgetoptです。

于 2010-10-04T20:22:16.837 に答える
2

Simon Willisonのoptfuncモジュールは、探している機能を提供しようとします。

于 2010-10-04T20:29:11.290 に答える
1

opteratorモジュールはこれを処理します。

https://github.com/buchuki/opterator

于 2012-12-10T17:13:53.013 に答える
0

Pythonには、これを行うためのgetoptsモジュールがあります。

于 2010-10-04T20:21:51.783 に答える
0

最近、コマンドライン処理を装飾および簡素化するためのbeginsプロジェクトに出くわしました。

それはあなたが探しているのと同じ機能をたくさん提供しているようです。

于 2018-04-16T18:06:14.620 に答える