和朋友聊天,就谈到了学习的话题。 不知道什么时候我听到了一句话,因为我不想承受生活的艰辛,所以我才忍受学习的艰辛。 生活的苦,躺着就能体会,但学习的苦,却需要我们强迫自己去吃。 我每天下班回来,等到孩子睡着了才开始学习。 当我学会了几乎所有东西后,我开始写博客,然后发布公众号。 每天两三点对于我的身体来说有点太多了。 我只是乘坐接驳巴士就在好几站睡觉了。 现在司机都认识我了。 好的,到了车站先给我打电话。 太棒了……没有努力一定会有回报,但想要有所收获,只有不断努力才有机会……努力吧!
昨天总结了字符串相关的方法。 说实话,零碎的知识点太多了。 花了2个多小时,逐一清点、分类、整理、最后讲解。 但我还是把事情全都经历了一遍,把以前的知识查了又填,温故知新,还不错……
今天我想和大家谈谈命令行参数。 虽然使用场景没有字符串那么多,但成败还是要看细节。 当别人看到你提供了更优雅的调用方法时,他们会喜欢你的严谨。 此时功名都深藏不露! 登上大厅……
命令行参数
在开发过程中,我们经常会遇到执行.py文件时需要向代码传递参数的情况。
当遇到传递参数的场景时,最基本的传递参数的方法是*.py argv1 argv2...,然后我们在代码中使用sya.argv来解析输入参数。
这样使用是没有问题的,但是不够严谨,不够不正式,不够美观……谁知道这些参数是做什么用的?
其实根据sys.argv的命令行参数,有三个模块-->-->。 今天我们来聊聊命令行模块的巅峰!
五刃斧入门
# -*- coding: utf-8 -*-
# @Author : 王翔
# @JianShu : 清风Python
# @Date : 2019/6/25 23:58
# @Software : PyCharm
# @version :Python 3.7.3
# @File : 11.python_argparse_cookbook.py
# 导入模块
import argparse
# 实例化解析器对象
parser = argparse.ArgumentParser(description='python argparse cookbook')
# 添加参数
parser.add_argument('-v', '--version', help="get version")
# 获取参数集合
args = parser.parse_args()
# 打印参数值
print("User input code version is: {}".format(args.version))
关于
用于创建解析器对象,该对象提供了许多可选参数:
为线入 .
:
其中,用于添加程序的描述。 它被更频繁地使用。 其他的仅供理解:
本质:
作为整个模块的亮点,需要我们仔细研究。
完整的格式如下:
.(名称或标志...[, ][, nargs][, const][, ][, 类型][, ][, ][, 帮助][, ][, dest])
定位参数
比如我们的程序必须要求每次都先输入用户名,那么我们可以这样写:
import argparse
parser = argparse.ArgumentParser(description='python argparse cookbook')
parser.add_argument('user', help="input username")
parser.add_argument('pwd', help="input password")
parser.add_argument('-v', '--version', help="get version")
args = parser.parse_args()
print(args.user)
if args.version:
print(args.version)
我们可以这样输入:
可以使用定位参数,但是代码中最好只有一个定位参数,否则会出现上一示例中的问题。 你只要求我输入参数,而不要求我输入参数的顺序。 既然如此,我们不妨使用可选参数来明确指定 **-u -p** 来更直观,这样合理吗?
可选参数
什么是可选参数? 添加以一两个破折号“-”开头的参数作为可选参数(前提是你无聊到可以修改参数)。 例如:“-v”或“--”。
使用这两个可选参数时需要注意的是,如果-v和--同时存在。 用户可以使用任何方法来传递参数,但是我们在获取参数时只能使用args。 即可得到对应的值。
=''
我们平时使用命令行参数时,有些参数是不需要传值的,比如最简单的ls -l。
但如果你这样做,系统会报错。 该怎么办?
.('-v', '--', ='', help="get ")
我们只需要赋值即可。
参数默认值
当我们添加一个参数时,.()中就会初始化相应的参数并赋值。
默认为“无”。 上面提到=''时,默认参数为False。
当然我们可以将默认的 None 更改为我们想要的值
参数限制
这个用得很多。 例如,我们的代码提供了安装、卸载、启动、停止工具等功能。 我们做得到...
.('-t', '--type', =['','','开始','停止'])
用户只能通过-t填写内部指令,否则会提示:参数输入错误
再比如,我们的程序要求用户提供一个端口信息,而端口必须是数字。 至于端口是否为数字,我们可以在获取参数后使用(port, int)来判断,但这相当于重新发明轮子。 它提供了类型选项,可以在用户输入参数时直接进行验证,无需您进行二次判断! 演示:
.('-p', '--port', 类型=int)
当我们输入-p abc时,模块会给出提示:error: -p/--port: int value: 'abc'
将可选参数设为必需
其实很简单:
.('-u','--user',=True,help=“输入”)
如果不填写该参数,会提示:分别是:-u/--user
结束
有人可能会说,这个系列不再被监控了。 只能说这部剧看的人太少了。 有时间我会不定期更新的...
好的,今天就这样。 如果您觉得有帮助,欢迎分享文章或我的微信公众号【清风】给更多喜欢的人。 谢谢。