最近、私は pathon のコマンド ライン解析ツール argparse を勉強しています。これは、コマンド ライン プログラムを作成するための Python 標準ライブラリで推奨されているツールです。
いつも UI プログラムをやっていたのですが、今日はコマンドライン プログラムを試してみました。特に面倒なインターフェイスの問題の勉強に多くの時間を費やす必要がなくなりました。
現在、Python を使用してコマンド ラインを実装し、コア コンピューティング モジュールは C を使用して独自の拡張ライブラリを作成でき、その効果は非常に優れています。
argparseを学び、公式ドキュメントでチュートリアルの記事を見つけて簡単に翻訳しました。
http://docs.python.org/2/howto/argparse.html#id1
Argparse チュートリアル
このチュートリアルでは、Python 標準ライブラリで推奨されているコマンド ライン パラメーター解析モジュールである Argparse の使用方法を簡単に紹介します。
1. 基本概念
このチュートリアルでは、一般的な ls コマンドを使用して argparse の機能を示します。
$ ls cpython devguide prog.py pypy rm-unused-function.patch $ ls pypy ctypes_configure demo dotviewer include lib_pypy lib-python ... $ ls -l total 20 drwxr-xr-x 19 wena wena 4096 Feb 18 18:51 cpython drwxr-xr-x 4 wena wena 4096 Feb 8 12:04 devguide -rwxr-xr-x 1 wena wena 535 Feb 19 00:05 prog.py drwxr-xr-x 14 wena wena 4096 Feb 7 00:59 pypy -rw-r--r-- 1 wena wena 741 Feb 18 01:01 rm-unused-function.patch $ ls --help Usage: ls [OPTION]... [FILE]... List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
上記の 4 つのコマンドから、次の基本概念を理解できます:
1) ls コマンドはパラメータなしで実行することもできます。デフォルトでは、現在のディレクトリ内のすべてのファイルの内容が出力されます。 。
2) より多くのコンテンツを表示したい場合は、より多くのパラメータを与える必要があります。この場合、別のディレクトリ pypy を表示します。ここでは、プログラムがコマンド ライン内の引数の位置に基づいて何を行うかを決定する必要があるため、この名前が付けられた共通の位置引数を指定しました。この概念はコマンド cp に近いもので、cp src dest はコピーするファイルを表し、dest はファイルのコピー先を表します。
3) 次に、プログラムの動作を変更したいと思います。この例では、ファイル名だけでなくファイルの西方向の情報を表示したいと考えています。パラメータ -l は既知のオプションの引数 (4) で、最後の文はヘルプを表示するドキュメントの 1 つです。 , 使ったことのないコマンドが出てきたときは、それを使って使い方を学ぶことができます。
import argparse parser = argparse.ArgumentParser() parser.parse_args()
$ python prog.py $ python prog.py --help usage: prog.py [-h] optional arguments: -h, --help show this help message and exit $ python prog.py --verbose usage: prog.py [-h] prog.py: error: unrecognized arguments: --verbose $ python prog.py foo usage: prog.py [-h] prog.py: error: unrecognized arguments: foo
2) 2 番目の名前付けは、argparse を使用する利点を示していますが、適切なヘルプ メッセージが表示されます。
3) --help パラメータを手動で設定しなくても、適切なヘルプ情報を取得できます。ただし、他のパラメータ (foo など) が指定された場合は、エラーが生成されます。
import argparse parser = argparse.ArgumentParser() parser.add_argument("echo") args = parser.parse_args() print args.echo
$ python prog.py usage: prog.py [-h] echo prog.py: error: the following arguments are required: echo $ python prog.py --help usage: prog.py [-h] echo positional arguments: echo optional arguments: -h, --help show this help message and exit $ python prog.py foo foo
プログラムを実行するには、パラメーターを設定する必要があります。
parse_args() メソッドは、実際にはコマンド ライン引数からデータを返します。上記の例では、それは echo です。
この「魔法」のようなプロセスは、argparse によって自動的に行われます。
自動生成されたヘルプ情報は美しく表示されていますが、echo パラメーターだけではそれが何をするのかまだわかりません。そこで、より便利にするためにいくつかの機能を追加しました。
import argparse parser = argparse.ArgumentParser() parser.add_argument("echo", help="echo the string you use here") args = parser.parse_args() print args.echo
$ python prog.py -h usage: prog.py [-h] echo positional arguments: echo echo the string you use here optional arguments: -h, --help show this help message and exit
import argparse parser = argparse.ArgumentParser() parser.add_argument("square", help="display a square of a given number") args = parser.parse_args() print args.square**2
$ python prog.py 4 Traceback (most recent call last): File "prog.py", line 5, in <module> print args.square**2 TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
import argparse parser = argparse.ArgumentParser() parser.add_argument("square", help="display a square of a given number", type=int) args = parser.parse_args() print args.square**2
$ python prog.py 4 16 $ python prog.py four usage: prog.py [-h] square prog.py: error: argument square: invalid int value: 'four'