一、argparse功能

argparse库是用来给python脚本传入参数的库

啥是传入参数?举个栗子,比如说我们有一个叫mycode.py的python脚本,我们在命令行里运行它(别忘了先进入当前目录,用cd命令)

1、不带参数的运行:

python mycode.py

2、带参数的运行:

python mycode.py 520 1314 -love
  • 520,1314这样的叫做positional arguments
  • -love这样的叫做optional arguments
    之后我们会详细讲述

这些520,1314等参数会被python读取,然后加以利用,这就是传入参数

二、从最简单的应用开始

求两整数a,b之和

mycode.py:

import argparse
parser = argparse.ArgumentParser()
#这个parse对象相当于一个总容器,存放着全部的信息
parser.add_argument("a",type=int)
#添加一个positional arguments,叫a,读取类型为int(默认是字符串)
parser.add_argument("b",type=int)
#添加一个positional arguments,叫b,读取类型为int(默认是字符串)
args = parser.parse_args()
#parse_args的类型是Namespaces,相当于一个字典,存放着所有positional arguments
sum=args.a+args.b       #从args调出参数a和b,求和
print(sum)

命令行:(别忘了先进入当前目录,用cd命令)

python mycode.py 1 2

输出:3

如果不带参数
就会报错,并且在usage后展示用法模板

>>>python mycode.py
usage: mycode.py [-h] a b
mycode.py: error: the following arguments are required: a, b

注:[-h]表示有一个optional argument叫做-h,这个是它自己带的,也就是help
我们用一下-h,它会教我们怎么打命令

>>>python mycode.py -h
usage: mycode.py [-h] a b

positional arguments:
  a
  b

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

加文字描述:
两种文字描述:
1、整个python文件: description=‘此代码用于求两个整数之和’
2、每个positional argument:help=“第一个整数”
方便用户查看

import argparse
parser = argparse.ArgumentParser(description='此代码用于求两个整数之和')
#这个parse对象相当于一个总容器,存放着全部的信息
parser.add_argument("a", type=int,help="第一个整数")
#添加一个positional arguments,叫a,读取类型为int(默认是字符串)
parser.add_argument("b",type=int,help="第二个整数")
#添加一个positional arguments,叫b,读取类型为int(默认是字符串)
args = parser.parse_args()
#parse_args的类型是Namespaces,相当于一个字典,存放着所有positional arguments
sum=args.a+args.b       #调出参数a和b,求和
print(sum)

效果:

PS C:\Users\fan.19\fan19-hub> python mycode.py -h
usage: mycode.py [-h] a b

此代码用于求两个整数之和

positional arguments:
  a           第一个整数
  b           第二个整数

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

那么这个最简单的应用就说完了,接下来我们来详细讲一下argparse里面的东西。主要的东西都在add argument这个函数里!!!

三、add_argument函数——核心!!

接受的值作用举例
name字符串变量的名字‘radius’
nargs数字或’?‘或’*‘或’+’用来说明传入的参数个数(符号意义和正则表达式里的一致)nargs=’?’ nargs=2
typelist, str, tuple, set, dict等设置读取参数的类型type=int
default类型跟type统一设置默认值default=1
choices装选项的list参数值只能从几个选项里面选择choices=[1,2,3,4]
requiredTrue或False这个可选参数是否必须有(只能用于-love这样的可选参数!否则报错)required=True
help字符串说明一下这个参数是干嘛的help=“I don’t know”
action六种内置动作一旦这个有参数,就会触发相应的动作action=‘store_true’

这几个键是最常用的,此表不全请注意
详细讲一下几个不太好懂的:

1.name

函数的第一项就是name

add_argument("b",type=int,help="第二个整数")
2.nargs

用来说明传入的参数的个数,可以是

  • 具体数字:要传进来几个
  • ‘*’:任意个 any
  • ‘?’:一个或者没有 1/0
  • ‘+’:至少一个 ≥1
    后期你调出这个参数的时候,它是一个list的形式储存你传入的东西
    那我们改进一下上面求两个整数和的程序
import argparse
parser = argparse.ArgumentParser(description='此代码用于求两个整数之和')
#这个parse对象相当于一个总容器,存放着全部的信息
parser.add_argument("integers", type=int,nargs=2,help="第一个整数")
#添加俩positional arguments,叫integers,读取类型为int
args = parser.parse_args()
#parse_args的类型是Namespaces,相当于一个字典,存放着所有positional arguments
integers=args.integers       #调出来intergers,它是一个list!!
print("integer的类型是:",type(integers))   
sum=sum(integers)  #list元素求和
print(sum)
3.type

type用来决定,你是以什么样的数据类型把参数读进来的
默认的话是字符串,跟input函数一样!!!!
看这个大乌龙程序:
mycode:

import argparse
parser = argparse.ArgumentParser(description='此代码用于求两个整数之和')
#这个parse对象相当于一个总容器,存放着全部的信息
parser.add_argument("a",help="第一个整数???不是")
#添加一个positional arguments,叫a,读取类型为int(默认是字符串)
parser.add_argument("b",,help="第二个整数???不是")
#添加一个positional arguments,叫b,读取类型为int(默认是字符串)
args = parser.parse_args()
#parse_args的类型是Namespaces,相当于一个list,存放着所有positional arguments
sum=args.a+args.b       #调出参数a和b,求和
print(sum)

命令行:

python mycode.py 1 2

输出的是12,而不是我们想要的1+2=3!!!!!!
这波是直接把两个字符连起来了qwq

import argparse

parser = argparse.ArgumentParser(description='命令行中传入一个数字')
parser.add_argument('integers', type=int, nargs='+',help='传入的数字')
args = parser.parse_args()

#对传入的数据进行加总
print(sum(args.integers)
3.action

可以参照这篇:argparse 中action参数

如果对您有帮助,请不吝点赞哦~,谢谢!!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐