您的位置  > 互联网

深藏功与名的命令行参数,你有吗?

和朋友聊天,就谈到了学习的话题。 不知道什么时候我听到了一句话,因为我不想承受生活的艰辛,所以我才忍受学习的艰辛。 生活的苦,躺着就能体会,但学习的苦,却需要我们强迫自己去吃。 我每天下班回来,等到孩子睡着了才开始学习。 当我学会了几乎所有东西后,我开始写博客,然后发布公众号。 每天两三点对于我的身体来说有点太多了。 我只是乘坐接驳巴士就在好几站睡觉了。 现在司机都认识我了。 好的,到了车站先给我打电话。 太棒了……没有努力一定会有回报,但想要有所收获,只有不断努力才有机会……努力吧!

昨天总结了字符串相关的方法。 说实话,零碎的知识点太多了。 花了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

结束

有人可能会说,这个系列不再被监控了。 只能说这部剧看的人太少了。 有时间我会不定期更新的...

好的,今天就这样。 如果您觉得有帮助,欢迎分享文章或我的微信公众号【清风】给更多喜欢的人。 谢谢。