最近在研究pathon的命令行解析工具,argparse,它是Python標準庫中推薦使用的編寫命令行程序的工具。html
之前總是作UI程序,今天試了下命令行程序,感受至關好,不用再花大把時間去研究界面問題,尤爲是vc++中尤爲繁瑣。python
如今用python來實現命令行,核心計算模塊能夠用c本身寫擴展庫,效果挺好。c++
學習了argparse,在官方文檔中找到一篇toturial,簡單翻譯了下。ide
http://docs.python.org/2/howto/argparse.html#id1工具
這篇教程簡明地介紹了Python標準庫推薦使用的命令行參數解析模塊——Argparse的使用。學習
基本概念ui
在這篇教程中咱們經過一個常見的ls命令來展現argparse的功能。this
$ 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.
從以上的四個命令中,咱們可以瞭解如下幾個基本概念:spa
基本認識命令行
咱們從一個基本的程序開始(它什麼也不作)
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
結果分析:
位置參數
首先,給一個例子:
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
結果分析:
儘管自動產生的幫助信息展現地很美觀,可是咱們仍然沒法只根據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會將輸入看成字符串處理,因此咱們須要設置它的類型:(type=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'
如今,這個程序可以順利運行,並且可以處理一些錯誤輸入。
From: http://www.cnblogs.com/jianboqi/archive/2013/01/10/2854726.html