Python argparse库用法总结

发布于 2021-08-08  116 次阅读


基本格式

  • import argparse: 导入标准模块
  • parser = argparse.ArgumentParser(description="your script description" ):创建一个解析对象
    • description 参数可以用于插入描述脚本用途的信息,也可以为空
  • parser.add_argument():像该对象中添加你要关注的命令行参数和选项
  • parser.parse_args: 进行解析

parser.add_argument()参数

位置参数(positional argyments)

import argparse

parser = argparse.ArgumentParser(description="没啥想说的就是占个位")
parser.add_argument("url")
args = parser.parse_args()

print(args.url)
  • 在使用时,不需要在命令行输入参数,直接输入位置参数的值,这里 位置参数的值是必须的
  • 多个位置参数同时存在的时候,是安装顺序方式进行的

可选参数(optional arguments)

import argparse

parser = argparse.ArgumentParser(description="没啥想说的就是占个位")
parser.add_argument("-v", "--verbosity", help="这是一个测试!", type=int)
args = parser.parse_args()

if args.verbosity == 1:
   print(1)
elif args.verbosity == 2:
   print(2)
else:
   print("error")
  • -指定短参数,--指定长参数
  • 在调用的时候,当只存在短参数时,直接args.v拼接短参数即可;当两种参数类型同时存在的时候,需要args.verbosity拼接长参数进行调用
  • 如果没有action参数,必须对可选参数赋值,如果存在action参数,可以不指定参数值。用法如下:
    • 当选在该参数时返回True,反之返回False
import argparse

parser = argparse.ArgumentParser(description="没啥想说的就是占个位")
parser.add_argument("-v",  help="这是一个测试!", action="store_true")
args = parser.parse_args()

if args.v:
   print(args.v)
else:
   print(args.v)
image-20210808114708465

类型(type)

  • 默认类型时str,普通的内置类型和函数可被用作类型转换器,用法如下:
    • 不建议将 bool() 函数用作类型转换器。 它所做的只是将空字符串转为 False 而将非空字符串转为 True。 这通常不是用户所想要的。
import argparse
import pathlib

parser = argparse.ArgumentParser()
parser.add_argument('count', type=int)
parser.add_argument('distance', type=float)
parser.add_argument('street', type=ascii)
parser.add_argument('code_point', type=ord)
parser.add_argument('source_file', type=open)
parser.add_argument('dest_file', type=argparse.FileType('w', encoding='latin-1'))
parser.add_argument('datapath', type=pathlib.Path)

可选值choices=[]

可以通过添加该选参数,将用户输入的值做限定。用法如下:

import argparse

parser = argparse.ArgumentParser(description="没啥想说的就是占个位")
parser.add_argument("-v",  help="这是一个测试!", choices=[1,2,3])
args = parser.parse_args()

默认值default

使用该选项能够为参数初始化默认值

互斥参数

import argparse

parser = argparse.ArgumentParser(description="没啥想说的就是占个位")
group = parser.add_mutually_exclusive_group()
group.add_argument("-v",  help="这是一个测试!", type=int)
group.add_argument("-q", help="这就是一个测试")

args = parser.parse_args()
  • 首先定义了一个互斥组,在互斥组中添加了-v-q两个参数
  • -q-v 不出现,或仅出现一个都可以,同时出现就会报错