概述
argparse模块作为optparse的一个替代被添加到Python2.7。argparse的实现支持一些不易于添加到optparse以及要求向后不兼容API变化的特性,因此以一个新模块添加到标准库。
1. 使用流程
1.1 设置一个解析器
使用argparse的第一步就是创建一个解析器对象,并告诉它将会有些什么参数。那么当你的程序运行时,该解析器就可以用于处理命令行参数。
解析器类是 **ArgumentParser **。构造方法接收几个参数来设置用于程序帮助文本的描述信息以及其他全局的行为或设置。
import argparse
parser = argparse.ArgumentParser(description='This is a PyMOTW sample program')
1.2 定义参数
定义参数argparse是一个全面的参数处理库。参数可以触发不同的动作,动作由 add_argument() 方法的 action 参数指定。 支持的动作包括保存参数(逐个地,或者作为列表的一部分),当解析到某参数时保存一个常量值(包括对布尔开关真/假值的特殊处理),统计某个参数出现的次数,以及调用一个回调函数。
默认的动作是保存参数值。在这种情况下,如果提供一个类型,那么在存储之前会先把该参数值转换成该类型。如果提供 dest 参数,参数值就保存为命令行参数解析时返回的命名空间对象中名为该 dest 参数值的一个属性。
1.3 解析一个命令行
定义了所有参数之后,你就可以给 parse_args() 传递一组参数字符串来解析命令行。默认情况下,参数是从 sys.argv[1:] 中获取,但你也可以传递自己的参数列表。选项是使用GNU/POSIX语法来处理的,所以在序列中选项和参数值可以混合。
parse_args() 的返回值是一个命名空间,包含传递给命令的参数。该对象将参数保存其属性,因此如果你的参数 dest 是 “myoption”,那么你就可以args.myoption 来访问该值。
**注意: **
我们-表示一个字符(短字符); 用–表示大于一个字符(长字符)
2. 举个简单的例子
import argparse
parser = argparse.ArgumentParser(description='simple app')
# 首先创建一个argparse对象
parser.add_argument('--count', action="store",type=int, default=2, help='1, 2, 3, 4') # 定义参数
parser.add_argument('--units', action="store",default='hello',help='h, vv, ff')
# 默认action是store还有其他方式请查看参考文章
args = parser.parse_args()
# 解析一个命令行
print(type(args.count))
# 假如上面程序保存为argparse_app.py
上面的程序有好几点是需要注意的:
Q1: 首先我们为什么在这里使用’–'不使用不行吗?
- 这里使用的原因:假如有这样一种情况我们不想要指定命令行参数,直接运行python argparse_app.py程序也希望是可以运行的,可以使用默认参数。但是如果不加’–‘的时候我们发现尽管我们使用default程序还是会报错,说缺少必要的参数,因此’–'是可以和default配套使用输出默认的参数。
Q2: 这里为什么需要使用type类型?
- 因为命令行输入输出都是string类型,虽然我们在交互环境中打了2但是这实际情况是字符‘2’,这点我们可以通过type()来进行验证。
Q3:这里使用help参数的目的?
- 我们可以运行python argparse_app.py -h 或者(–help)命令来显示我们可以选择哪些参数,有利于人机交互
Q4. parser.parse_args输出什么以及args.count是什么?
- parser.parse_args输出的是命名空间Namespace(count=2, units=‘hello’),另外我们可以.操作符号访问里面的元素然后在把他传递给程序,这样我们就完成了从命令行输入命令行参数来给程序中某些变量赋值的功能。 另外注意一点输出命名空间元素不需要使用‘–’也是就是args.count而不是args.–count
Q5: 如何通过命令行进行外部赋值?
- python argparse_app.py --count 5 --uinits hsvc这样我们就达到了Namespace(count=5, units=‘hsvc’)赋值功能了
参考文章:
- argparse – Command line option and argument parsing
- ipython笔记
最后
以上就是懵懂芝麻为你收集整理的Python命令行解析工具:Argparse简单使用的全部内容,希望文章能够帮你解决Python命令行解析工具:Argparse简单使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复