python argparse模組

來源:互聯網
上載者:User

標籤:equal   zed   變數   pos   ack   password   要求   action   用法   

 argparse模組

argparse是python標準庫裡面用來處理命令列參數的庫。

基本用法
import argparseparser = argparse.ArgumentParser()parser.parse_args()

輸出結果

XXX>python arg_example.pyXXX>python arg_example.py -husage: arg_example.py [-h]optional arguments:  -h, --help  show this help message and exitXXX>python arg_example.py ausage: arg_example.py [-h]arg_example.py: error: unrecognized arguments: aXXX>
  • 第一個沒有任何輸出和出錯
  • 第二個測試為列印協助資訊,argparse會自動產生協助文檔
  • 第三個測試為未定義的a參數,會出錯
 positional arguments

positional arguments為英文定義,中文名叫有翻譯為定位參數的,用法是不用帶-就可用

import argparseparser = argparse.ArgumentParser()parser.add_argument("echo")args = parser.parse_args()print (args.echo)輸出結果:XXX>python arg_example.py aaXXX>python arg_example.py echoechoXXX>python arg_example.pyusage: arg_example.py [-h] echoarg_example.py: error: the following arguments are required: echo

定義了一個叫echo的參數,預設必選

  • 第一個測試為正常用法,回顯了輸入字串a
  • 第二個測試為不帶參數,由於echo參數為空白,所以報錯,並給出用法(usage)和錯誤資訊
optional arguments

中文名叫選擇性參數,有兩種方式:

  1. 一種是通過一個-來指定的短參數,如-h
  2. 一種是通過--來指定的長參數,如--help
import argparseparser = argparse.ArgumentParser()parser.add_argument("-v", "--verbo", help="verbo usage")args = parser.parse_args()if args.verbo:        print ("verbo turned on %s" % args.verbo)輸出結果:XXX>python arg_example.py -v helloverbo turned on helloXXX>python arg_example.py --verbo helloverbo turned on helloXXX>python arg_example.py -husage: arg_example.py [-h] [-v VERBO]optional arguments:  -h, --help            show this help message and exit  -v VERBO, --verbo VERBO                        verbo usageXXX>python arg_example.py ausage: arg_example.py [-h] [-v VERBO]arg_example.py: error: unrecognized arguments: a

定義了選擇性參數-v--verbo,通過解析後,其值儲存在args.verbo變數中  

  • 測試1中,通過-v來指定參數值
  • 測試2中,通過--verbos來指定參數值
  • 測試3中,通過-h來列印協助資訊
  • 測試4中,沒有給-v指定參數值,所以會報錯
 action=‘store_true‘

通過定義參數時指定action="store_true",可以像-h那樣,不需要指定參數值

import argparseparser = argparse.ArgumentParser()parser.add_argument("-v", "--verbo", help="verbo usage", action="store_true")args = parser.parse_args()if args.verbo:        print("verbo turned on %s" % args.verbo)輸出結果:XXX>python arg_example.py -vverbo turned on TrueXXX>python arg_example.py -husage: arg_example.py [-h] [-v]optional arguments:  -h, --help   show this help message and exit  -v, --verbo  verbo usageXXX>python arg_example.py -v hellousage: arg_example.py [-h] [-v]arg_example.py: error: unrecognized arguments: hello

 

  • 測試1中,-v沒有指定任何參數也可,其實存的是True和False,如果出現,則其值為True,否則為False
  • 測試2中,通過-h來列印協助資訊
  • 測試3中,-v指定參數值,會報錯,因為指定Ture或False

 

 argparse配置參數

可以配置的參數有以下:

  • dest: 可以決定解析後,取值時的屬性名稱, 尤其適於有多個等價參數. 不指定時就是選項不加-的字串.
  • type: 選項的實值型別,值的預設類型是字串, 這裡將值指定為其他類型.
  • default: 預設值. 沒有設定預設值的為None.
  • help: 選項中有 -h 時列印的 help 資訊.
  • metavar: 表示顯示到 help 中選項的預設值;
  • choices: 當 type 設定為 choices 時,需要設定此值.
action: 用於控制對選項和參數的處理,像無參數選項處理,可以設定為以下幾種字串:
  • "store": 儲存值到 dest 指定的屬性,強制要求後面提供參數;
  • "store_true": 當使用該選項時,後面的 dest 將設定為 true, 不跟參數.
  • "store_false": 當使用該選項時,後面的 dest 將設定為 false. 常配合另一個 "store_true" 的選項使用同一個 dest 時使用. 不跟參數.
  • "append": 儲存值到 dest 指定的屬性,並且是以數組的形式, 必須跟參數.
  • "store_const": 用來儲存參數為 const 設定的值到 dest 指定的屬性當中.常用於 dest 為同名2個以上選項時的處理. 不跟參數.
  • "append_const": 用來儲存參數為 const 設定的數組到 dest 指定的屬性當中. 不跟參數.
  • "count": 使用後將給儲存值到 dest 指定的屬性值加1,可以統計參數中出現次數.用途不大. 不跟參數.
  • "callback": 後面指定回呼函數名(不加括弧),會將相應opt和args傳給回呼函數.
  • "help", "version": 對應為協助和版本. 要另外自己設計時使用.
default:
import argparseparser = argparse.ArgumentParser()parser.add_argument("-v", "--verbo", help="verbo usage" ,default=1)args = parser.parse_args()if args.verbo:        print("verbo turned on %s" % args.verbo)
type
import argparseparser = argparse.ArgumentParser()parser.add_argument(‘-x‘, type=int, help="square")args = parser.parse_args()answer = args.x ** 2print(answer)

 

choices
import argparseparser = argparse.ArgumentParser(description="calculate X to the power of Y")parser.add_argument("square", type=int,                    help="display a square of a given number")parser.add_argument("-v", "--verbosity", type=int, choices=[0, 1, 2], default=1,                    help="increase output verbosity")args = parser.parse_args()answer = args.square**2if args.verbosity == 2:    print("the square of {} equals {}".format(args.square, answer))elif args.verbosity == 1:    print("{}^2 == {}".format(args.square, answer))else:    print(answer)

  

輸出結果

XXX>python arg_example.py 3 -v 13^2 == 9XXX>python arg_example.py 3 -v 2the square of 3 equals 9XXX>python arg_example.py 33^2 == 9XXX>python arg_example.pyusage: arg_example.py [-h] [-v {0,1,2}] squarearg_example.py: error: the following arguments are required: squareXXX>python arg_example.py -husage: arg_example.py [-h] [-v {0,1,2}] squarecalculate X to the power of Ypositional arguments:  square                display a square of a given numberoptional arguments:  -h, --help            show this help message and exit  -v {0,1,2}, --verbosity {0,1,2}                        increase output verbosity

 

案例ftp用戶端命令列
import argparseparser = argparse.ArgumentParser(    description="ftp用戶端,使用-S 127.0.0.1 -P 9988 -u hh -p 123")parser.add_argument("-s", "--server", type=str, default=‘127.0.0.1‘,                    dest="server",                    help="ftp server ip_addr")parser.add_argument("-P",                    "--port",                    type=int,                    dest="port",                    help="ftp server port")parser.add_argument("-u",                    "--username",                    type=str,                    choices=[‘alex‘, ‘egon‘, ‘eva‘],                    dest="username",                    help="username info")parser.add_argument("-p",                    "--password",                    dest="password",                    help="password info")args = parser.parse_args()print(‘server:{}  port:{}  username:{}  password:{}‘.format(args.server, args.port, args.username, args.password))

 

輸出結果

XXX>python arg_example.py -husage: arg_example.py [-h] [-s SERVER] [-P SERVER] [-u {alex,egon,eva}]                      [-p PASSWORD]ftp用戶端,使用-S 127.0.0.1 -P 9988 -u hh -p 123optional arguments:  -h, --help            show this help message and exit  -s SERVER, --server SERVER                        ftp server ip_addr  -P SERVER, --port SERVER                        ftp server port  -u {alex,egon,eva}, --username {alex,egon,eva}                        username info  -p PASSWORD, --password PASSWORD                        password infoXXX>python arg_example.py -s 127.0.0.1 -P 9988 -u en -p 123usage: arg_example.py [-h] [-s SERVER] [-P PORT] [-u {alex,egon,eva}]                      [-p PASSWORD]arg_example.py: error: argument -u/--username: invalid choice: ‘en‘ (choose from ‘alex‘, ‘egon‘, ‘eva‘)XXX>python arg_example.py -s 127.0.0.1 -P 9988 -u alex -p 123server:127.0.0.1  port:9988  username:alex  password:123XXX>python arg_example.py -s 127.0.0.1 -P 9988 -u alex -p 123456server:127.0.0.1  port:9988  username:alex  password:123456

  

  

參考http://yarving.historytale.com/  

 

  

 

 

  

  

  

python argparse模組

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.