命令行解析工具 Argparse介紹


我們從一個基本的程序開始(它什么也不做)

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

結果分析:

  • 若不給參數而運行這個程序,將不會得到任何結果。
  • 第二條命名顯示了使用的argparse的好處,你什么也沒做,卻得到了一個很好的幫助信息。
  • 我們無需人為設置--help參數,就能得到一個良好的幫助信息。但是若給其他參數(比如foo)就會產生一個錯誤。

位置參數

   首先,給一個例子:

import argparseparser = argparse.ArgumentParser()parser.add_argument("echo")args = parser.parse_args()print args.echo

運行結果:

$ python prog.pyusage: prog.py [-h] echoprog.py: error: the following arguments are required: echo$ python prog.py --helpusage: prog.py [-h] echopositional arguments:  echooptional arguments:  -h, --help  show this help message and exit$ python prog.py foofoo

結果分析:

  • 這次,我們增加了一個add_argument()方法,用來設置程序可接受的命令行參數。
  • 現在要運行程序,就必須設置一個參數。
  • parse_args()方法實際上從我們的命令行參數中返回了一些數據,在上面的例子中是echo
  • 這個像“魔法”一樣的過程,是argparse自動完成的。

盡管自動產生的幫助信息展示地很美觀,但是我們仍然無法只根據echo這個參數知道它是做什么的。所以,我們增加了一些東西,使得它變得更有用。

import argparseparser = argparse.ArgumentParser()parser.add_argument("echo", help="echo the string you use here")args = parser.parse_args()print args.echo

運行結果:

$ python prog.py -husage: prog.py [-h] echopositional arguments:  echo        echo the string you use hereoptional arguments:  -h, --help  show this help message and exit

在此基礎上,我們再多改變一點:(計算輸入參數square的平方)

import argparseparser = 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 4Traceback (most recent call last):  File "prog.py", line 5, in <module>    print args.square**2TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'

這個程序並不能正確運行,因為argparse會將輸入當作字符串處理,所以我們需要設置它的類型:(type=int)


import argparseparser = 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 416$ python prog.py fourusage: prog.py [-h] squareprog.py: error: argument square: invalid int value: 'four'

現在,這個程序能夠順利運行,而且能夠處理一些錯誤輸入。


>>> >>> help(argparse.ArgumentParser.add_argument)Help on method add_argument in module argparse:add_argument(self, *args, **kwargs) unbound argparse.ArgumentParser method    add_argument(dest, ..., name=value, ...)    add_argument(option_string, option_string, ..., name=value, ...)
dest: 參數在程序中對應的變量名稱 add_argument("a",dest='code_name')
default: 參數默認值
help: 參數作用解釋  add_argument("a", help="params means")
type : 默認string  add_argument("c", type=int)
action:
    store:默認action模式,存儲值到指定變量。
    store_const:存儲值在參數的const部分指定,多用於實現非布爾的命令行flag。
    store_true / store_false:布爾開關。可以2個參數對應一個變量。
    append:存儲值到列表,該參數可以重復使用。
    append_const:存儲值到列表,存儲值在參數的const部分指定。
    count: 統計參數簡寫輸入的個數  add_argument("-c", "--gc", action="count")
    version 輸出版本信息然后退出。
const:配合action="store_const|append_const"使用,默認值
choices:輸入值的范圍 add_argument("--gb", choices=['A', 'B', 'C', 0])
補充鏈接
http://www.cnblogs.com/captain_jack/archive/2011/01/11/1933366.html






注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: