Python模块之argparse(命令行解析模块)

本文详细介绍Python标准库中的argparse模块,用于处理命令行参数。包括定位参数和可选参数的使用,通过实例演示如何创建解析对象,添加参数,并进行解析。同时介绍了add_argument方法的详细参数说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

argparse是python标准库里面用于处理命令行参数的库。
命令行参数分为定位参数和选项参数:

  • 定位参数就是程序根据该参数出现的位置来确定的。
  • 选项参数是应用程序已经提前定义好的参数,不是随意指定的。

用法

主要有四个步骤:

  • import argparse 首先导入模块
  • parser = argparse.ArgumentParser() 创建一个解析对象
  • parser.add_argument() 向该对象中添加命令行参数和选项
  • args = parser.parse_args() 进行解析
import argparse

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

print(args.integer)

上述代码在终端运行,结果如下:

    $ 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

定位参数

上面的示例,其实就是展示了定位参数的使用,再来看一个例子:

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 argparse_usage.py 9
    81

可选参数

现在看下可选参数的用法,所谓可选参数,也就是命令行参数是可选的,看下面例子:

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)

输出结果:

$ 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  # 没有输出

混合使用

定位参数和选项参数可以混合使用,看下面一个例子,给一个整数序列,输出它们的和或者最大值(默认):

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()方法

ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
  • name or flags - 选项字符串的名字或者列表,例如foo或者-f, --foo
  • action - 命令行遇到参数时的动作,默认值是store
    • store_const,表示赋值为const;
    • append,将遇到的值存储为列表,也就是如果参数重复则会保存多个值;
    • append_const,将参数规范中定义的一个值保存成一个列表
    • count, 存储遇到的次数,此外,也可以继承argparse.Action自定义参数解析;
  • dest,解析后的参数名称,默认情况下,对于可选参数选取最长的名称,中划线转换为下划线

action参数详解

https://blog.youkuaiyun.com/drievn/article/details/70821188

Reference:
https://blog.youkuaiyun.com/yzxnuaa/article/details/79733047

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值