Python命令行解析argparse常用語法使用簡介


查看原文:http://www.sijitao.net/2000.html
python中的命令行解析最簡單最原始的方法是使用sys.argv來實現,更高級的可以使用argparse這個模塊。argparse從python 2.7開始被加入到標准庫中,所以如果你的python版本還在2.7以下,那么需要先手動安裝。

基本使用

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

參數介紹

上面這個例子是最簡單的一個使用例子,功能是把你的輸入參數打印到屏幕 。不過對於基本的使用需求,這幾行代碼應該就已經夠用,更加高級的用法可以參考官方文檔。

下面介紹下例子代碼。

1、導入argparse模塊

2、創建解析器對象ArgumentParser,可以添加參數。

description:描述程序

parser=argparse.ArgumentParser(description="This is a example program ")

add_help:默認是True,可以設置False禁用

3、add_argument()方法,用來指定程序需要接受的命令參數

定位參數:

parser.add_argument("echo",help="echo the string")

可選參數:

parser.add_argument("--verbosity", help="increase output verbosity")

在執行程序的時候,定位參數必選,可選參數可選。

add_argument()常用的參數:

dest:如果提供dest,例如dest="a",那么可以通過args.a訪問該參數

default:設置參數的默認值

action:參數出發的動作

store:保存參數,默認

store_const:保存一個被定義為參數規格一部分的值(常量),而不是一個來自參數解析而來的值。

store_ture/store_false:保存相應的布爾值

append:將值保存在一個列表中。

append_const:將一個定義在參數規格中的值(常量)保存在一個列表中。

count:參數出現的次數

parser.add_argument("-v", "--verbosity", action="count", default=0, help="increase output verbosity")

version:打印程序版本信息

type:把從命令行輸入的結果轉成設置的類型

choice:允許的參數值

parser.add_argument("-v", "--verbosity", type=int, choices=[0, 1, 2], help="increase output verbosity")

help:參數命令的介紹

上代碼:

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

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 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_argument()方法,用來設置程序可接受的命令行參數。
  • 現在要運行程序,就必須設置一個參數。
  • 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
 

在此基礎上,我們再多改變一點:(計算輸入參數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'

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

(今天暫時寫到這里,以后接着寫)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM