在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ argparse
基礎
itertools
HTTP 服務
hashlib
閉包
文件和目錄
單元測試
使用 @property
標準模塊
陌生的 metaclass
Base64
進程、線程和協(xié)程
讀寫二進制文件
匿名函數(shù)
輸入和輸出
Click
元組
字符編碼
partial 函數(shù)
參考資料
collections
協(xié)程
類和實例
Python 之旅
定制類和魔法方法
常用數(shù)據(jù)類型
繼承和多態(tài)
ThreadLocal
HTTP 協(xié)議簡介
Requests 庫的使用
讀寫文本文件
列表
os 模塊
迭代器 (Iterator)
正則表達式
集合
上下文管理器
異常處理
你不知道的 super
定義函數(shù)
datetime
資源推薦
字典
slots 魔法
hmac
第三方模塊
進程
類方法和靜態(tài)方法
函數(shù)參數(shù)
高階函數(shù)
函數(shù)
re 模塊
高級特性
線程
argparse
生成器
結束語
字符串
map/reduce/filter
函數(shù)式編程
Celery
裝飾器

argparse

argparse 是 Python 內置的一個用于命令項選項與參數(shù)解析的模塊,通過在程序中定義好我們需要的參數(shù),argparse 將會從 sys.argv 中解析出這些參數(shù),并自動生成幫助和使用信息。當然,Python 也有第三方的庫可用于命令行解析,而且功能也更加強大,比如 docopt,Click。

argparse 使用

簡單示例

我們先來看一個簡單示例。主要有三個步驟:

  • 創(chuàng)建 ArgumentParser() 對象
  • 調用 add_argument() 方法添加參數(shù)
  • 使用 parse_args() 解析添加的參數(shù)
# -*- coding: utf-8 -*-

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('integer', type=int, help='display an integer')
args = parser.parse_args()

print args.integer

將上面的代碼保存為文件 argparse_usage.py,在終端運行,結果如下:

$ python argparse_usage.py
usage: argparse_usage.py [-h] integer
argparse_usage.py: error: too few arguments

$ python argparse_usage.py abcd
usage: argparse_usage.py [-h] integer
argparse_usage.py: error: argument integer: invalid int value: 'abcd'

$ python argparse_usage.py -h
usage: argparse_usage.py [-h] integer

positional arguments:
  integer     display an integer

optional arguments:
  -h, --help  show this help message and exit

$ python argparse_usage.py 10
10

定位參數(shù)

上面的示例,其實就展示了定位參數(shù)的使用,我們再來看一個例子 - 計算一個數(shù)的平方:

# -*- coding: utf-8 -*-

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

將上面的代碼保存為文件 argparse_usage.py,在終端運行,結果如下:

$ python argparse_usage.py 9
81

可選參數(shù)

現(xiàn)在看下可選參數(shù)的用法,所謂可選參數(shù),也就是命令行參數(shù)是可選的,廢話少說,看下面例子:

# -*- coding: utf-8 -*-

import argparse

parser = argparse.ArgumentParser()

parser.add_argument("--square", help="display a square of a given number", type=int)
parser.add_argument("--cubic", help="display a cubic of a given number", type=int)

args = parser.parse_args()

if args.square:
    print args.square**2

if args.cubic:
    print args.cubic**3

將上面的代碼保存為文件 argparse_usage.py,在終端運行,結果如下:

$ python argparse_usage.py --h
usage: argparse_usage.py [-h] [--square SQUARE] [--cubic CUBIC]

optional arguments:
  -h, --help       show this help message and exit
  --square SQUARE  display a square of a given number
  --cubic CUBIC    display a cubic of a given number

$ python argparse_usage.py --square 8
64

$ python argparse_usage.py --cubic 8
512

$ python argparse_usage.py 8
usage: argparse_usage.py [-h] [--square SQUARE] [--cubic CUBIC]
argparse_usage.py: error: unrecognized arguments: 8

$ python argparse_usage.py  # 沒有輸出

混合使用

定位參數(shù)和選項參數(shù)可以混合使用,看下面一個例子,給一個整數(shù)序列,輸出它們的和或最大值(默認):

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                   help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                   const=sum, default=max,
                   help='sum the integers (default: find the max)')

args = parser.parse_args()
print args.accumulate(args.integers)

結果:

$ python argparse_usage.py
usage: argparse_usage.py [-h] [--sum] N [N ...]
argparse_usage.py: error: too few arguments
$ python argparse_usage.py 1 2 3 4
4
$ python argparse_usage.py 1 2 3 4 --sum
10

add_argument() 方法

add_argument() 方法定義如何解析命令行參數(shù):

ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

每個參數(shù)解釋如下:

  • name or flags - 選項字符串的名字或者列表,例如 foo 或者 -f, --foo。
  • action - 命令行遇到參數(shù)時的動作,默認值是 store。
    • store_const,表示賦值為const;
    • append,將遇到的值存儲成列表,也就是如果參數(shù)重復則會保存多個值;
    • append_const,將參數(shù)規(guī)范中定義的一個值保存到一個列表;
    • count,存儲遇到的次數(shù);此外,也可以繼承 argparse.Action 自定義參數(shù)解析;
  • nargs - 應該讀取的命令行參數(shù)個數(shù),可以是具體的數(shù)字,或者是?號,當不指定值時對于 Positional argument 使用 default,對于 Optional argument 使用 const;或者是 * 號,表示 0 或多個參數(shù);或者是 + 號表示 1 或多個參數(shù)。
  • const - action 和 nargs 所需要的常量值。
  • default - 不指定參數(shù)時的默認值。
  • type - 命令行參數(shù)應該被轉換成的類型。
  • choices - 參數(shù)可允許的值的一個容器。
  • required - 可選參數(shù)是否可以省略 (僅針對可選參數(shù))。
  • help - 參數(shù)的幫助信息,當指定為 argparse.SUPPRESS 時表示不顯示該參數(shù)的幫助信息.
  • metavar - 在 usage 說明中的參數(shù)名稱,對于必選參數(shù)默認就是參數(shù)名稱,對于可選參數(shù)默認是全大寫的參數(shù)名稱.
  • dest - 解析后的參數(shù)名稱,默認情況下,對于可選參數(shù)選取最長的名稱,中劃線轉換為下劃線.

參考資料