• Python 中的命令行参数处理 -- argparse、optparse、getopt


    argparse、optparse、getopt 三个模块都可以对命令行中的参数处理,但 optparse 模块已被 Python3.2、Python2.7 弃用;getopt 模块的API是来自C语言中的  getopt() 函数;argparse 模块是基于 optparse 的,使用方法相似,从 sys.argv 中解析参数,可编写用户友好的命令行界面,自动生成帮助和使用信息,对于无效参数可产生相应的错误提示。因此本文主要介绍 argparse 模块的相关用法。

    官方样例

    prog.py

      1 import argparse
      2 parser = argparse.ArgumentParser(description='Process some integers.')
      3 parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator')
      4 parser.add_argument('-s', '--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers (default: find the max)')
      5 args = parser.parse_args()
      6 print(args.accumulate(args.integers))

    上述代码接收命令行中的所有整数,默认输出最大整数。通过可选参数 '-s' 或 '--sum',输出所有整数和。非整数输入会输出相应的错误提示。

    image_thumb35

    创建解析器

      1 import argparse
      2 parser = argparse.ArgumentParser(description='Process some integers.')

    通过上述方法创建了一个 ArgumentParser 实例对象,其中 description 参数是对该对象的描述。更多参数详见 官方文档

    添加参数

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

    通过 add_argument() 方法来添加参数,一共有两种参数。一种为位置参数,如:'integers';一种为可选参数,如:短参数 '-s' 或长参数 '--sum' 。由 argparse创建的解析器自带可选参数 '-h' 或 '--help',生成相应的帮助和使用信息。

    该方法中的参数描述如下:

    • metavar:指定帮助信息中的参数名称。本例指定 'N' 为 'integers' 在帮助信息中的名称。
    • type:指定命令行中的参数类型。常见有 int、str、float 等。
    • nargs:指定命令行中的参数数量。一般通过整数指定个数,本例中的 '+' 表示接受所有参数到一个列表中。
    • dest:指定解析器的属性名。本例中的可选参数可通过 args.accumulate 来访问。
    • const:指定常量值或一些动作。本例指定求和动作 sum 。
    • action:指定参数操作。本例中的'store_const'操作为使用存储 const 关键字参数指定的值 sum 。更多动作详见 官方文档
    • default:指定参数的默认值或一些动作。本例指定求最大值动作 max 。
    • help:描述参数信息。

    解析参数

      1 args = parser.parse_args()

    通过 parse_args() 方法默认接受 sys.argv 的参数,返回可获取属性的 namespace 对象。除此之外,还可通过 vars(args) 方法将该对象字典化,通过字典的方式访问属性。

    总结

    argparse 模块通过创建解析器,添加参数,解析参数三步完成对命令行参数的处理。

  • 相关阅读:
    软连接
    libmysqlclient.so.18 not found 的解决方法
    查找某个文件并全部删除
    sudo passwd root:没有相关指令
    智能解析套件
    日志类封装
    windows安装mysql
    xshell报错Socket error Event: 32 Error: 10053
    appium简明教程(8)——那些工具
    appium简明教程(7)——Desired Capabilities详解
  • 原文地址:https://www.cnblogs.com/sherlockChen/p/8245512.html
Copyright © 2020-2023  润新知