Pythonコマンドライン解析ツールArgparse


最近はpathonのコマンドライン解析ツールを研究していますが、argparseはPython標準ライブラリで推奨されているコマンドラインプログラムの作成ツールです。
以前はいつもUIプログラムをやっていましたが、今日はコマンドラインのプログラムを試してみました。とてもいい感じです。これ以上時間をかけてインターフェースの問題を研究しなくてもいいです。特にvc++中は煩雑です。
今はpythonでコマンドラインを実現します。コア計算モジュールはcで自分で拡張ライブラリを書いてもいいです。
argparseを勉強しました。公式文書の中でtoturialを見つけました。簡単に翻訳してください。
http://docs.python.org/2/howto/argparse.html#id1
Argparse Tutorial
この教程では、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)もっと多くの内容を見せたいなら、もう少し多くのパラメータを与える必要があります。このような状況では、別のディレクトリを表示したいです。私たちがしているのは、パラメータによってコマンドラインの位置を決めるプログラムが必要なので、通常の位置決めパラメータ(positional argment)を明確にしています。この概念はコマンドcpにより近いです。cp src destは、Srcはコピーしたいファイルを表しています。destはファイルをどこにコピーしたいかを示しています。
3)今、プログラムの行動を変えたいです。私達の例では、ファイルの西に向けた情報を表示したいです。ファイル名だけではなく、パラメータ-lは私達が知っているオプションパラメータです。
4)、最後の文はヘルプの文書の一部分を表示します。これまで使ったことのないコマンドに会ったら、どうやって使うかを学ぶことができます。
2、基本的な認識
私たちは一つの基本的な手順から始めます。

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

結果分析:
1)パラメータを与えずにこのプログラムを実行すると、結果は得られません。
2)、第二条のネーミングは使用するargparseのメリットを示していますが、あなたは何もしていません。いい情報を得ました。
3)、私達は人のために--helpパラメータを設定する必要がなく、良好なヘルプ情報を得ることができます。他のパラメータ(例えばfoo)を与えるとエラーが発生します。
3、位置パラメータ
まず、例をあげます。

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

結果分析:
今回、私達は一つのadd_を追加しました。argment()メソッドは、プログラムが許容できるコマンドラインのパラメータを設定します。
今プログラムを実行するには、パラメータを設定しなければなりません。
パーシ_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

この基礎の上で、もうちょっと変えます。(入力パラメータsquareの平方を計算します。)

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'
このプログラムは正しく動作しません。argparseは入力を文字列として処理しますので、そのタイプを設定する必要があります。

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'
今、このプログラムは順調に実行できます。そして、エラー入力を処理できます。
以上はPythonコマンドライン解析ツールArgparseの簡単な使用についての教程です。皆様にご協力をお願いします。