argparse的简单使用
简单记录一下argparse的用法
这个是针对我做区块链的一些demo时需要用到的,仅把用到了的一些操作记录,argparse很强大,更多细致的操作可以参考:https://docs.python.org/zh-cn/3/library/argparse.html#module-argparse
位置参数介绍
argparse模块如其名字一样,可以对命令行参数进行解析,可以让人轻松编写用户友好的命令行接口
用ls命令进行举例
localhost:~# ls
bench.py    hello.c     hello.js    readme.txt
localhost:~# ls -l
total 16
-rw-r--r--    1 root     root           114 Jul  6 01:47 bench.py
-rw-r--r--    1 root     root            76 Jul  3 17:15 hello.c
-rw-r--r--    1 root     root            22 Jun 26 17:27 hello.js
-rw-r--r--    1 root     root           151 Jul  6 01:49 readme.txt
localhost:~# ls -a
.             .ash_history  .mozilla      bench.py      hello.js
..            .cache        .wine         hello.c
我们使用ls命令时通过添加其后不同的参数,我们可以得到不一样的结果。
在我们自己学习或者开发的过程中,也能会需要一些命令行参数,来方便我们操作,而argparse这个模块正是用来实现这种功能的。
首先我们先来看一个最简单的例子:
import argparse
if __name__ == '__main__':
    parse = argparse.ArgumentParser()
    parse.add_argument('echo')
    args = parse.parse_args()
    print(args.echo)
(base) D:>python ArgparseLearn.py
usage: ArgparseLearn.py [-h] echo
ArgparseLearn.py: error: the following arguments are required: echo
(base) D:>python ArgparseLearn.py Hello
Hello
以上是代码以及测试和输出。
我们来解析一下代码部分:
- 首先创建一个
ArgumentParser类,这个类的作用是用于将命令行字符串解析为Python对象的对象,原文是:Object for parsing command line strings into Python objects。 - 之后我们添加一个叫做'echo'的参数,注意,这个echo只是参数的名字,并非值,类似于键值对的key,而value需要我们输入命令时自己添加上去。
 - 而
parse_args这个函数会把参数以某种形式传给我们设置的变量args - 最后输出args中我们之前设置的echo参数
 
而再看我们的测试部分:
 当我们未携带参数的时候显示了error,而当我们带了参数Hello时则将其输出到终端。
故这种设置参数的方法会使得我们在使用命令时必须携带参数
可选参数介绍
使用以上方法并不能像ls命令一般,需要参数则添加,不需要则不添加。所以我们需要知道如何设置可选参数。再来看一份示例代码:
import argparse
if __name__ == '__main__':
    parse = argparse.ArgumentParser()
    parse.add_argument('--echo')
    args = parse.parse_args()
    print(args.echo)
(base) D:>python ArgparseLearn.py
None
(base) D:>python ArgparseLearn.py --echo Hello
Hello
这份代码相比于之前的位置参数的代码,只是在设置参数的时候添加了'--',故设置可选参数时,我们只需在参数名前添加'--'即可
再来观察测试。若是我们没有选择可选参数,我们发现结果为None,所以当我们没有选择可选参数时,可选参数默认为None.而当我们添加可选参数,则会将我们所赋的值给args。
短选项
但是细心的你是不是还发现这个于ls命令还是有所区别?在ls命令中,我们使用的是ls -a这种短选项命令,而显然,我们现在还未实现这种做法。那么看接下这份代码:
import argparse
if __name__ == '__main__':
    parse = argparse.ArgumentParser()
    parse.add_argument('-e', '--echo')
    args = parse.parse_args()
    print(args.echo)
(base) D:>python ArgparseLearn.py
None
(base) D:>python ArgparseLearn.py --echo Hello
Hello
(base) D:>python ArgparseLearn.py -e Hello
Hello
再次对比这次的代码与之前的,会发现,仅仅是add_argument()方法中多添加了一个'-e'参数,所以设置短选项就是添加一个类似于'-e'的参数即可。而且'-e'和'--echo'的位置可以交换,不影响。
之前的三种方式咱们可以单独使用,也可以一起混合使用,看大家需求。
接下来介绍一些add_argument()其中的另外一些参数,帮助我们更好的实现我们的所需。
help,help参数可以在他人不知道如何使用该参数去操作时给予说明和解释。例如:import argparse if __name__ == '__main__':
parse = argparse.ArgumentParser()
parse.add_argument('-e', '--echo', help="Print the word")
args = parse.parse_args()
print(args.echo)
(base) D:>python ArgparseLearn.py --help
usage: ArgparseLearn.py [-h] [-e ECHO] optional arguments:
-h, --help show this help message and exit
-e ECHO, --echo ECHO Print the word
type,type参数可以规定我们参数的类型,默认是字符串格式,在实现某些功能时我们希望传入的参数可能时int类型或者其他的,就可以通过此参数实现。示例如下:import argparse if __name__ == '__main__':
parse = argparse.ArgumentParser()
# 测试1
# parse.add_argument('-s', '--square', help="Calculate the square of a number")
# 测试2
parse.add_argument('-s', '--square', type=int, help="Calculate the square of a number")
args = parse.parse_args()
print(args.square**2)
(base) D:>python ArgparseLearn.py -s 2
Traceback (most recent call last):
File "ArgparseLearn.py", line 7, in <module>
print(args.square**2)
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int' (base) D:>python ArgparseLearn.py -s 2
4
通过结果我们可以看出,测试1直接将2视为了字符串,所以报错,而测试2添加了type参数后则将2视为Int类型。
default,还记得之前的可选参数的例子把,当我们没有选择某个可选参数时,可选参数的值为None,但是在实际运用的时候,我们不能让参数是None,这时候我们就需要设置默认值,那么就可以使用default方法,如下例:import argparse if __name__ == '__main__':
parse = argparse.ArgumentParser()
parse.add_argument('-s', '--square', type=int, help="Calculate the square of a number", default=2)
args = parse.parse_args()
print(args.square**2)
(base) D:>python ArgparseLearn.py
4 (base) D:>python ArgparseLearn.py -s 4
16
更多的参数可以参考源码或者文档:

以上就是所有内容了,内容比较简单,但是却可以满足平常的很多的需求,想要更多功能的可以参考本文开头的文档。希望本文对你有帮助。
argparse的简单使用的更多相关文章
- python中argparse模块简单使用
		
python中argparse模块简单使用 简介 argparse是python用于解析命令行参数和选项的标准模块.argparse模块的作用是用于解析命令行参数. 使用步骤 1.首先导入该模块 2. ...
 - Argparse简易教程
		
Argparse简易教程 原文:Argparse Tutorial 译者:likebeta 本教程是对于Python标准库中推荐使用的命令行解析模块argparse的简单介绍. PS:还有其他两个模块 ...
 - python 命令行参数——argparse模块的使用
		
以下内容主要来自:http://wiki.jikexueyuan.com/project/explore-python/Standard-Modules/argparse.html argparse ...
 - python学习之argparse模块的使用
		
以下内容主要来自:http://wiki.jikexueyuan.com/project/explore-python/Standard-Modules/argparse.html argparse ...
 - 【python】argparse学习(转)
		
点击这里成为作者 · 更新于 2018-11-14 21:00:36 argparse argparse 是 Python 内置的一个用于命令项选项与参数解析的模块,通过在程序中定义好我们需要的参数, ...
 - python命令行解析函数
		
sys.argv 在终端运行python 1.py hahah import sys print(sys.argv) # ['1.py', 'hahah'] argparse Python的命令行解析 ...
 - python argparse模块解析命令行选项简单使用
		
argparse模块的解析命令行选项简单使用 util.py #!/usr/bin/env python # coding=utf-8 import argparse parser = argpars ...
 - Python标准模块--argparse
		
1 模块简介 你一定很奇怪Python是如何命令行中的变量的吧?argparse就是用来解决这个问题的,argparse是optparse的替代. 2 模块使用 2.1 开始 我发现解释一个编程的概念 ...
 - Python解析命令行读取参数 -- argparse模块
		
在多个文件或者不同语言协同的项目中,python脚本经常需要从命令行直接读取参数.万能的python就自带了argprase包使得这一工作变得简单而规范.PS:optparse包是类似的功能,只不过写 ...
 
随机推荐
- 使用Github快速的寻找项目
			
作为一个3年的码农昨天在学习项目,顺便总结一下 ,在Github找项目的几个常用方式 ,如果对您有帮助,可以点个关注,便于下次光顾! 首先我们来看一下常用命令 1.指定搜索方式 搜索文件中有spiri ...
 - 初级程序需要掌握的SQL(一)
			
之前我也是,是一个看视频学习的小白,以前老是喜欢通宵看视频,一天10小时小时的学习量,一点效率都没有,就想写一个博客,来帮助大家回顾的SQL语句, 因为我也是初级,所以名字就叫初级程序员需要掌握的sq ...
 - 阿里云Centos7.6上面部署基于redis的分布式爬虫scrapy-redis将任务队列push进redis
			
Scrapy是一个比较好用的Python爬虫框架,你只需要编写几个组件就可以实现网页数据的爬取.但是当我们要爬取的页面非常多的时候,单个服务器的处理能力就不能满足我们的需求了(无论是处理速度还是网络请 ...
 - Python:值得学习的二十个技巧
			
本文为大家介绍20个值得记住的 Python 技巧,可以提升您编程技巧, 并为您节省大量时间. 在平常编程过程中,以下技巧大多非常有用. 1 字符串反转 使用切片反转字符串. str1="q ...
 - springboot+mybatis+bootstrap开发员工oa后台管理系统项目源码
			
java项目源码详情描述:S020<springboot+mybatis+bootstrap开发员工oa后台管理系统项目源码>jboa项目有请假以及报销单的申请和审核session共享加登 ...
 - Javaweb前台界面代码复用总结
			
servlet声明定义message信息传给前天界面判断输出message: if(booknamelist.size()==0) { message="根据书名查询没有结果!"; ...
 - 通过naa在esxi主机上找到物理磁盘的位置
			
因为有一块磁盘告警,需要找到这个块磁盘.通过网络搜索就找到了这个shell脚本. 感谢 Jorluis Perales, VxRail TSE 2 shell脚本: # Script to obtai ...
 - 每日一个linux命令6 -- rmdir
			
rmdir doc 如果doc为空目录则删除,否则无法删除. rmdir -p test2/test3 递归删除空目录,首先判断test3,如果test3为空,则删除test3,此时判断test2,如 ...
 - mysql plugin
			
mysql plugin 概要 mysql可以通过启动参数,系统命令mysql_install,mysql命令install plugin来加载指定的插件 mysql的存储引擎被设计成插件式,可以根据 ...
 - 洛谷P4848 崂山白花蛇草水 权值线段树+KDtree
			
题目描述 神犇 \(Aleph\) 在 \(SDOI\ Round2\) 前立了一个 \(flag\):如果进了省队,就现场直播喝崂山白花蛇草水.凭借着神犇 \(Aleph\) 的实力,他轻松地进了山 ...