简介

argparse是Python的一个命令行解析器

1、创建解析器    ArgumentParser

import argparseparser = argparse.ArgumentParser(prog = "my_program", usage = "%(prog)s [options] usage", description = "help信息前显示的信息———我的argparse命令行参数用法", epilog = "help信息之后显示的信息")print(parser.print_help())
(venv) E:\文档\Python\PythonTest>python argparseTest.py
usage: my_program [options] usagehelp信息前显示的信息———我的argparse命令行参数用法optional arguments:-h, --help  show this help message and exithelp信息之后显示的信息
None

prog : 脚本文件名,默认为sys.argv[0],用来在help信息中描述程序的名称

usage :描述程序用途的字符串

description :help信息前显示的信息

epilog : help信息之后显示的信息

2、添加参数选项 add_argument

ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

 1. name or flags : 参数有两种,可选参数和位置参数

  • positional arguments - 位置参数

用法是在命令行中不用带“-”就可以用

import argparseparser = argparse.ArgumentParser(prog = "my_program", usage = "%(prog)s [options] usage", description = "help信息前显示的信息———我的argparse命令行参数用法", epilog = "help信息之后显示的信息")parser.add_argument("echo")  #位置参数args = parser.parse_args()print(args.echo)#运行结果------------------------------------------------------------
(venv) E:\文档\Python\PythonTest>python argparseTest.py hahaha
hahaha
  • optional arguments - 可选参数

用法是在命令行中要使用横杠,其中有两种方式:

一种是通过一个"-"来指定的短参数,如"-h";

一种是通过一个"--"来指定的长参数,如"--help";

这两种方式可以同时使用或只用一种

import argparseparser = argparse.ArgumentParser(prog = "my_program", usage = "%(prog)s [options] usage", description = "help信息前显示的信息———我的argparse命令行参数用法", epilog = "help信息之后显示的信息")parser.add_argument("-f", "--foo", help = "这是一个f或foo命令的指令")    #可选参数
#该行定义了可选参数-f 或 --foo, 通过解析后,其值保存在args.foo变量中args = parser.parse_args()print(args.foo)#运行结果------------------------------------------------------------
(venv) E:\文档\Python\PythonTest>python argparseTest.py -f hahaha
hahaha(venv) E:\文档\Python\PythonTest>python argparseTest.py --foo heiheihei
heiheihei

2. action

在命令行中使用 "-f" 时,必须指定参数值,否则就会报错,有没有像 "-h" 那样,不需要指定参数值得呢,答案是有的,通过定义参数时指定action = "store_true" 即可,用法如下

import argparseparser = argparse.ArgumentParser(prog = "my_program", usage = "%(prog)s [options] usage", description = "help信息前显示的信息———我的argparse命令行参数用法", epilog = "help信息之后显示的信息")parser.add_argument("-f", "--foo", help = "这是一个f或foo命令的指令", action = "store_true")args = parser.parse_args()print(args.foo)#运行结果------------------------------------------------------------
(venv) E:\文档\Python\PythonTest>python argparseTest.py -f
True

-f 没有指定任何参数,其实存的是True或False,如果出现,则其值为True,否则为False

3. nargs : 指定参数的数量

4. const : 保存一个常量

5. default : 默认值

1. 参数的值可以为整数N(N个),*(任意个,可以为0个),+(一个或多个)

import argparseparser = argparse.ArgumentParser(prog = "my_program", usage = "%(prog)s [options] usage", description = "help信息前显示的信息———我的argparse命令行参数用法", epilog = "help信息之后显示的信息")parser.add_argument("-f", help = "这是一个f命令的指令", nargs = "*")
parser.add_argument("-v", help = "这是一个v命令的指令", nargs = "*")print(parser.parse_args("-f 1 2 -v 3 4 5".split()))#运行结果------------------------------------------------------------
(venv) E:\文档\Python\PythonTest>python argparseTest.py
Namespace(f=['1', '2'], v=['3', '4', '5'])

2. 值为?时,首先从命令行获取的参数,如果有 -v 而后面没加参数,则从const中取值,如果没有 -v ,则从default中取值

import argparseparser = argparse.ArgumentParser(prog = "my_program", usage = "%(prog)s [options] usage", description = "help信息前显示的信息———我的argparse命令行参数用法", epilog = "help信息之后显示的信息")parser.add_argument("-f", help = "这是一个f命令的指令", nargs = "?", default = "default")
parser.add_argument("-v", help = "这是一个v命令的指令", nargs = "?", const = "hahaha", default = "default")print(parser.parse_args("-f 1 -v 2".split()))
print(parser.parse_args("-f 1 -v".split()))
print(parser.parse_args([]))#运行结果------------------------------------------------------------
(venv) E:\文档\Python\PythonTest>python argparseTest.py
Namespace(f='1', v='2')
Namespace(f='1', v='hahaha')
Namespace(f='default', v='default')

6. type : 指定的参数类型,默认为str

7. choices : 设置参数值的范围,如果choices中的类型不是字符串,记得指定type

import argparseparser = argparse.ArgumentParser(prog = "my_program", usage = "%(prog)s [options] usage", description = "help信息前显示的信息———我的argparse命令行参数用法", epilog = "help信息之后显示的信息")parser.add_argument("-f", help = "这是一个f命令的指令", type = int, choices = range(1, 4))print(parser.parse_args("-f 1".split()))
print(parser.parse_args("-f 4".split()))#运行结果------------------------------------------------------------
(venv) E:\文档\Python\PythonTest>python argparseTest.py
Namespace(f=1)usage: my_program [options] usage
my_program: error: argument -f: invalid choice: 4 (choose from 1, 2, 3)

8. required : 可选参数在命令行中是否可以省略(仅针对可选参数)

import argparseparser = argparse.ArgumentParser(prog = "my_program", usage = "%(prog)s [options] usage", description = "help信息前显示的信息———我的argparse命令行参数用法", epilog = "help信息之后显示的信息")parser.add_argument("-f", help = "这是一个f命令的指令", required=True)print(parser.parse_args())#运行结果------------------------------------------------------------
(venv) E:\文档\Python\PythonTest>python argparseTest.py
usage: my_program [options] usage
my_program: error: the following arguments are required: -f(venv) E:\文档\Python\PythonTest>python argparseTest.py -f hahaha
Namespace(f='hahaha')

9.help : 设置这个选项的帮助信息

10.metavar : 该选项默认时会把参数的名字变为大写;更改时会在帮助信息中显示指定名称

import argparseparser = argparse.ArgumentParser(prog = "my_program", usage = "%(prog)s [options] usage", description = "help信息前显示的信息———我的argparse命令行参数用法", epilog = "help信息之后显示的信息")parser.add_argument("-f", "--foo", help = "这是一个f命令的指令", metavar="Function")print(parser.print_help())#运行结果------------------------------------------------------------
(venv) E:\文档\Python\PythonTest>python argparseTest.py
usage: my_program [options] usagehelp信息前显示的信息———我的argparse命令行参数用法optional arguments:-h, --help            show this help message and exit-f Function, --foo Function这是一个f命令的指令help信息之后显示的信息
None

11. dest : 这个参数相当于把位置参数或可选参数关联到一个特定的新变量中

import argparseparser = argparse.ArgumentParser(prog = "my_program", usage = "%(prog)s [options] usage", description = "help信息前显示的信息———我的argparse命令行参数用法", epilog = "help信息之后显示的信息")parser.add_argument("-f", help = "这是一个f命令的指令")print(parser.parse_args("-f haha".split()))#运行结果------------------------------------------------------------
(venv) E:\文档\Python\PythonTest>python argparseTest.py
Namespace(f='haha')########################################################################################
import argparseparser = argparse.ArgumentParser(prog = "my_program", usage = "%(prog)s [options] usage", description = "help信息前显示的信息———我的argparse命令行参数用法", epilog = "help信息之后显示的信息")parser.add_argument("-f", help = "这是一个f命令的指令", dest = "foo")print(parser.parse_args("-f haha".split()))#运行结果------------------------------------------------------------
(venv) E:\文档\Python\PythonTest>python argparseTest.py
Namespace(foo='haha')

Python_argparse相关推荐

  1. Python_argparse.Argumentparser()

    argparse模块简介 官方文档 argparse是一个Python模块:命令行选项.参数和子命令解析器. argparse模块可以让人轻松编写用户友好的命令行接口.程序定义它需要的参数,然后arg ...

  2. pythonos模块介绍_python的os模块fnmatch模块介绍

    一.先介绍一下os模块 import os print(os.getcwd()) # E:\python\test\python_models # 获取当前的目录 print(os.listdir(& ...

  3. mybatis 新增语句_mybatis增删改查

    映射文件EmployeeMapper.xml 注意:小于或大于号等可能与如select标签的尖括号(<>)与冲突或者无法识别的时候,可以使用转义字符比如小于号可以使用&It; 等等 ...

最新文章

  1. python装饰器原理-Python装饰器完全解读
  2. Windows Phone 7用户界面原型截图汇总
  3. 无图形界面下控制台操作Virtualbox
  4. 职工信息管理软件c语言大一,职工信息管理(C语言
  5. 为什么说拥抱.NET CORE的时候到了
  6. c语言插件实现原理,C语言实现插件机制
  7. 最短路 Dijkstra 算法详解与模板
  8. 用什么工具可以制作gif?分享一款在线制作gif动画工具
  9. 国际国家代号mysql_最全的各国 语言(文化)代码与国家地区对照表(国际通用标准形式)...
  10. python3 根据种子文件torrent获取磁力链接
  11. 一、Jquery入门(超详)
  12. 畅捷通魔方MP70初体验
  13. Ansys-结构动力学分析-悬臂梁模态分析学习收获
  14. 基于VC++的MFC类库实现的简单FTP客户端
  15. javascript 百度百科
  16. BigDecimal 往左移动两位小数_移动信号灯
  17. 2022.5.25 FreeSurfer入门练习:Recon-all
  18. 陪玩MM千千万,谁是你的NO.1?使用Python获取陪玩照片进行颜值检测打分
  19. 计算2个拼音的相似度 PHP版本
  20. doc转docx文件会乱吗_docx怎么转换成doc?docx转doc方法汇总

热门文章

  1. oracle清除bin,Oracle recyclebin详解(闪回删除的表)
  2. python 单一继承定义_Python学习之单继承与多继承
  3. ipqc异常处理流程图_IPQC巡检流程.七大手法.八大原则.九大步骤
  4. Tensorboard可视化:基于LeNet5进行面部表情分类
  5. php smarty 语法,php之Smarty根本语法和三大变量
  6. 宝塔面板的ftp无法使用解决
  7. 如何用ARKit将太阳系装进iPhone(二)
  8. linux服务器时间乱码问题解决
  9. springboot启动时的一个bug
  10. Flink - allowedLateness