首页 > 编程语言 >python之argparse

python之argparse

时间:2022-08-27 13:55:47浏览次数:71  
标签:argparse help python parser argument add 参数

argparse 是 Python内置的用来处理命令行参数的库。写脚本时有时会用到,这里略做总结便于以后使用。

1 使用sys.argv模块:

脚本有时候需要传入一些命令参数:

  • 在C语言里,main函数原型为int main(int argc, char ** argv) , 其中argc表示传入参数的个数,argv指向参数的指针数组
  • python也有类似写法,命令行参数时存储在sys.argv里。
import sys
if __name__ == '__main__':
    # 打印所有参数
    for arg in sys.argv:
        print(arg)
    
    # 第一个arg指的是此脚本,传入的第一个参数,应该取第二个
    print(sys.argv[1])

2 使用argparase模块:

2.1 argparase模块的常见写法

import argparse
# main函数入口,添加参数
if __name__ == '__main__':
    parser = argparse.ArgumentParser()   # 创建一个解析对象
    parser.add_argument()                # 向该对象添加参数
    args = parser.parse_args()           # 解析参数

2.2 argparse.ArgumentParser()函数

ArgumentParser常用参数description,大部分情况只会用到这个参数。

parser = argparse.ArgumentParser(description='argparase test')

2.3 parser.add_argument()函数

添加参数的形式:

ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
参数 形式
name or flags 名字可以写很多个,一般写两个,一个短参数,一个长参数
可选选项位置不固定:
parser.add_argument(“-f”, “–file”, help=”test file”)
位置固定的选项,调用属性也与sys.argv相同:
parser.add_argument(“bar”, help=”test”)
nargs 表示这个参数后面的value有多少个
如-n 1 2 3 4来设置 n = [1 2 3 4],则可用如下方式(+表示至少一个,?表示该位置参数要么没有,要么就只要一个)
parser.add_argument(“-n”, “–num”, nargs=”+”, type=int)
default 如果命令行中没有出现这个选项,则使用default指定的默认值。如:
parser.add_argument(“-f”, “–file”, help=”test file”, default="test.txt")
type 如果希望传进来的参数时指定的类型,可以用type限定(如float、 int or file)
parser.add_argument(“-x”, type=int)
choices 设置参数值的范围,如果choises中的类型不是字符串,需要指定type。如:
parser.add_argument(“-y”, choices=[‘a’, ‘b’, ‘d’])
required 通常可选选项(如-f等)可有可无,但如果required=True,则成为必须项
metavar 参数的名字,在显示帮助信息是才用到
help 设置这个选项的帮助信息
dest 解析后的参数名称
action argparse内置6种动作可以在解析参数时触发:
store 保存参数值,可能会先将参数值转换成另一个数据类型,默认改动作
store_const 保存一个被定义为参数规格的值,而不是一个来自参数解析而来的值
store_ture/store_false 保存相应的布尔值。被用于实现布尔开关
append 将值保存到一个列表中。若参数重复出现,则保存多个值。
append_const 将一个定义在参数规格中的值保存到一个列表中。
version 打印关于程序的版本信息,然后退出

2.4 argparase模块使用示例

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))

结果:

$ py_test.py  -h
usage: py_test.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)
PS E:\mine\wiki\git> python3 E:\mine\wiki\git\py_test.py  77 10 55
77
PS E:\mine\wiki\git> python3 E:\mine\wiki\git\py_test.py  77 10 55 --sum
142

参考:

1 Python3---argparse 库

标签:argparse,help,python,parser,argument,add,参数
From: https://www.cnblogs.com/sureZ-learning/p/16630449.html

相关文章

  • python必备基础
    1.基础函数 序号 函数 说明 1print() 打印 2input()  输入  3int()  转化为整形  4float() 转化为浮点型  5str()  ......
  • Python图像处理丨图像的灰度线性变换
    摘要:本文主要讲解灰度线性变换。本文分享自华为云社区《[Python图像处理]十五.图像的灰度线性变换》,作者:eastmount。一.图像灰度线性变换原理图像的灰度线性变换是通过......
  • python内存管理机制
    python作为一门解释型语言,以代码简洁易懂著称。我们可以直接对名称赋值,而不必声明类型。名称类型的确定、内存空间的分配与释放都是由python解释器在运行时进行的。python......
  • 算法题python用法
    算法题python用法大写变小写往后移动一位chr(ord(v.lower())+1)大写、小写、数字i.isalpha():#英文i.isspace()#空格​ifitem.isupper():#大写     a......
  • 【技术流吃瓜】python可视化大屏舆情分析“张天爱“事件网友评论
    目录一、事件背景二、微热点分析二、自开发Python舆情分析2.1Python爬虫2.2可视化大屏2.2.1大标题2.2.2词云图2.2.3条形图2.2.4饼图(玫瑰图)2.2.5地图三、演示视频一......
  • Python 下载大文件,哪种方式速度更快
    转载:Python下载大文件,哪种方式速度更快(qq.com)方法一使用以下流式代码,无论下载文件的大小如何,Python内存占用都不会增加:def download_file(url):    local_fil......
  • flask 解决日志重复打印问题 or Python日志重复打印
    背景:业务代码上线后,莫名会重复输出很多相同的日志,已知以为是多线程问题,后仔细了解期logging原理后发现并非如此。以下为解决方案fromflaskimportFlaskas_Flaskfro......
  • 06.python闭包
    python闭包什么样的函数是闭包函数?满足以下条件:闭:外层函数嵌套了一个内层函数。包:内层函数调用外层函数命名空间内的名字。举例如下:defout_func():#外层函数......
  • 学习python-Day48
    今日学习内容JS获取用户输入有两种方式:普通数据(输入、选择)​ 标签对象.value文件数据(上传)​ 标签对象.files​ 标签对象.files[0]JS类属性操作let标签......
  • Python枚举用法_Enum
    #-*-coding:utf-8-*-fromenumimportEnum,unique#1.枚举的定义#首先,定义枚举要导入enum模块。#枚举定义用class关键字,继承Enum类。#2.如果要限制定......