python命令行解析工具argparse模塊【1】


  argpaser是python中很好用的一個命令行解析模塊,使用它我們可以很方便的創建用戶友好型命令行程序。而且argparse會自動生成幫助信息和錯誤信息。

一、示例

  例如下面的例子,從命令行中獲取幾個整數,然后獲取它們的和或者最大值。

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)

  從命令行中輸入prog.py -h,會顯示如下信息

$ prog.py -h
usage: prog.py [-h] [--sum] N [N ...]

Process some integers.

positional arguments:
 N           an integer for the accumulator

optional arguments:
 -h, --help  show this help message and exit
 --sum       sum the integers (default: find the max)

  如果使用合適的參數,還可以求和或者取得最大值。

$ prog.py 1 2 3 4
4

$ prog.py 1 2 3 4 --sum
10
    如果傳遞錯誤的參數,將返回錯誤信息。
$ prog.py a b c
usage: prog.py [-h] [--sum] N [N ...]
prog.py: error: argument N: invalid int value: 'a'
     下面我們詳細解釋這個例子:
        1.創建parser
        首先,創建一個ArgumentParser對象。
>>> parser = argparse.ArgumentParser(description='Process some integers.')
        ArgumentParser對象中保存着解析命令行參數所必需的信息。
         2.添加參數
        通過調用add_argument()方法將命令行中的參數保存到ArgumentParser對象中。
>>> 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)')

   后面再調用parse_args(),將會返回一個包含integers和accumulate兩個屬性的對象,integers是一個列表,而accumulate可以是sum()函數(如果指定了--sum)或者max()函數。

  3.解析參數
    通過parse_args()方法解析參數,返回一個命名空間對象。
>>> parser.parse_args(['--sum', '7', '-1', '42'])
Namespace(accumulate=<built-in function sum>, integers=[7, -1, 42])
     如果在腳本中調用這個函數,parse_args()不會解析任何參數。ArgumentParser會從sys.argv中自動檢測命令行參數。

注意!

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



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