对于python命令行,你应该这么做才专业 #华为云·寻找黑马程序员#

当python遇到Andriod手机 那么,万物皆可盘 #华为云·寻找黑马程序员# 嚣张开场 今天不跟大家讲python知识,是不很失望?No,看过了今天的内容,你python的装13指数,至少上升1w+,并附带暴击、溅射、眩晕、致盲效果。没错,就是这么嚣张… 当python遇到安卓手机 我们日常的python学习和使用都是在电脑上的,会写Linux下的python脚本、搞一些爬虫的项目、开发几个好玩的web网站,用python做数据分析。可如果脱离了电脑,就成了零。 如何让我们... 阅读详情
论吃苦

和朋友聊天,说到了学习的问题。不知道何时听过一句话,***因为不想吃生活的苦,所以我忍受着学习的苦。生活的苦只要躺着就能吃到,而学习的苦却要我们逼着自己去吃。***每天下班回来等到孩子睡了开始学习,学的差不多了再开始写博客,然后发公众号,天天两三点让最近的身体有些吃不消,光坐班车睡过站就好几次,司机现在都认识我了,到站先喊下我。牛气…一分耕耘不一定会有一分收获,但要想有所收获,只能靠持续的付出才有机会…努力!
昨天吧python字符串相关的方法进行了总结,说实话零碎的知识点太多,统计、分类、整理、最后一个个的说明花了2个多小时的时间。但整体串过一遍,对之前的知识又进行了一次查漏补缺,温故而知新,还不错…
今天和大家聊聊python命令行参数,虽然使用场景没有字符串多,但细节觉得成败,当别人看到你提供更优雅的调用方式时,会对你的严谨点赞。此时,深藏功与名!升堂…

python命令行参数

在python开发中,我们经常会遇到在执行.py文件时,需要给代码传参的情况。
遇到传参的场景,最基础的传参方式为*.py argv1 argv2 ...,然后我们在代码中通过sya.argv来解析入参。
这样使用没有问题,但是不严谨、不正式,更不够帅气…谁知道你这些参数是干嘛的?
其实python基于sys.argv的命令行参数,存在三个模块getopt --> optprase --> argprase。今天咱们来说说处于命令行模块顶峰的argprase!

入门五板斧
# -*- 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))
关于ArgumentParser

ArgumentParser用于创建解析器对象,它提供了很多可选参数:

Object for parsing command line strings into Python objects.
Keyword Arguments:

  • prog – The name of the program (default: sys.argv[0])
  • usage – A usage message (default: auto-generated from arguments)
  • description – A description of what the program does
  • epilog – Text following the argument descriptions
  • parents – Parsers whose arguments should be copied into this one
  • formatter_class – HelpFormatter class for printing help messages
  • prefix_chars – Characters that prefix optional arguments
  • fromfile_prefix_chars – Characters that prefix files containing
    additional arguments
  • argument_default – The default value for all arguments
  • conflict_handler – String indicating how to handle conflicts
  • add_help – Add a -h/-help option
  • allow_abbrev – Allow long options to be abbreviated unambiguously

其中description用于添加对程序的描述,使用较多,其他的作为了解即可:

  • prog - 程序的名字(默认:sys.argv[0])
  • usage - 描述程序用法的字符串(默认:从解析器的参数生成)
  • description - 参数帮助信息之前的文本(默认:空)
  • epilog - 参数帮助信息之后的文本(默认:空)
  • parents - ArgumentParser 对象的一个列表,这些对象的参数应该包括进去
  • formatter_class - 定制化帮助信息的类
  • prefix_chars - 可选参数的前缀字符集(默认:‘-‘)
  • fromfile_prefix_chars - 额外的参数应该读取的文件的前缀字符集(默认:None)
  • argument_default - 参数的全局默认值(默认:None)
  • conflict_handler - 解决冲突的可选参数的策略(通常没有必要)
  • add_help - 给解析器添加-h/–help 选项(默认:True)
精髓:add_argument

add_argument作为整个模块的重头戏,我们需要仔细学习。
完整格式如下:
ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

  • name or flags - 选项字符串的名字或者列表,例如 foo 或者 -f, --foo。
  • action - 命令行遇到参数时的动作,默认值是 store。
  • nargs - 应该读取的命令行参数个数,可以是具体的数字,或者是?号,当不指定值时对于 Positional argument 使用 default,对于 Optional - - - argument 使用 const;或者是 * 号,表示 0 或多个参数;或者是 + 号表示 1 或多个参数。
  • const - action 和 nargs 所需要的常量值。
  • default - 不指定参数时的默认值。
  • type - 命令行参数应该被转换成的类型。
  • choices - 参数可允许的值的一个容器。
  • required - 可选参数是否可以省略 (仅针对可选参数)。
  • help - 参数的帮助信息,当指定为 argparse.SUPPRESS 时表示不显示该参数的帮助信息.
  • metavar - 在 usage 说明中的参数名称,对于必选参数默认就是参数名称,对于可选参数默认是全大写的参数名称.
  • dest - 解析后的参数名称,默认情况下,对于可选参数选取最长的名称,中划线转换为下划线.
    add_argument 用于添加入参,其中分为定位参数与可选参数,如何区别?
定位参数

比如我们程序每次必须要求先输入用户名,那么我们可以这么写:

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)

我们可以这么输入:

  • a.py qingfeng 123
  • a.py qingfeng 123 -v 1.0
  • a.py -v 1.0 qingfeng 123
  • a.py 123 -v 1.0 qingfeng # 注意这条

定位参数可以使用,但最好你的代码中,只存在一个定位参数,不然会出现最后一条例子的问题,你只要求我必须要输入参数,而没有要求我的输入顺序。这种情况我们还不如使用可选参数来明确规定**-u -p **来的更为直观,在理否?

可选参数

何为可选参数?在add_argument中添加以一个或者两个中划线“-”开头的参数,为可选参数(前提是你无聊到修改ArgumentParser中的prefix_chars参数)。eg:’-v’或者’–version’。
这两种可选参数使用时需注意的是,如果同时存在-v 和–version。用户可以使用任意一种方式进行传参,但我们在获取参数的时候,只能使用**args.version**才能获取对应的值。

action=‘store_true’

我们平时在使用命令行参数时,有些参数是无需传值的,比如最简单的ls -l。
可如果这么操作,系统会报错啊。该如何是好?
parser.add_argument('-v', '--version', action='store_true', help="get version")
我们只需要将action赋值store_true,即可。

参数的默认值

当我们通过add_argument添加一个参数时,parser.parse_args()中就会初始化一个对应的参数,并进行赋值。
默认为None。上面说的action='store_true’时,默认参数为False。
当然我们可以通过default来变更默认的None为我们所想要的值

参数限制

这个用到的比较多,比如我们的代码,提供了对工具的安装、卸载、启动、停止等功能。我们可以这么操作…
parser.add_argument('-t', '--type', choices=['install','uninstall','start','stop'])
用户通过-t只能填写choices内部的指令,不然会提示invalid choice:入参错误
又比如,我们程序需要用户提供一个端口信息,端口必然是一个数字。针对端口是否为数字,我们可以获取参数后使用isinstance(port,int)来判断,但这样相当于重造了个轮子,argparse提供了type选项,可以在用户入参时,就直接校验,无需你再二次判断了!demo:
parser.add_argument('-p', '--port', type=int)
当我们输入-p abc时,模块会给出提示:error: argument -p/–port: invalid int value: ‘abc’

将可选参数变为必选

其实很简单:
parser.add_argument('-u','--user',required=True,help="input username")
如果为填写该参数,则会提示:the following arguments are required: -u/–user

The End

可能有些人要说,selenium系列是不太监了,只能说这个系列看的人太少了,有空了间隔着更新吧…
OK,今天的内容就到这里,如果觉得有帮助,欢迎将文章或我的微信公众号【清风Python】分享给更多喜欢python的人,谢谢。

3D深度饼图的QT实现 首先,我们需要创建一个QT项目并创建一个窗口,用于显示我们的饼图。在QT Creator中,选择创建一个新的QT Widgets应用程序项目,并创建一个新的窗口类。在本文中,我将介绍如何使用QT实现一个3D深度饼图(Pie 3D)的可视化效果。在构造函数中,我们将创建一个饼图(QChartView)并设置饼图的数据。这是一个简单的示例,您可以根据需要自定义和扩展代码来创建更复杂的饼图。现在,我们已经完成了3D深度饼图的QT实现。您将看到一个具有相应数据的3D深度饼图显示在窗口中。3D深度饼图的QT实现。 阅读详情

相关推荐

实战解析:利用Wireshark解密QQ通信协议

本文提供了一份利用Wireshark工具分析QQ通信协议的实战指南。文章详细介绍了从环境准备、捕获数据包到解析协议层的完整流程,重点演示了如何识别QQ号码字段、观察加密数据特征以及区分不同通信类型(如文本、文件传输)。通过此实践,读者可以深入理解网络分层模型和现代应用加密通信机制,提升网络协议分析与安全诊断能力。

weixin_29210727的博客 408

python常用命令行命令

python的常用命令

wyzhaojun的博客 6576

基于Lora的一主多从监测与控制系统

题目:基于Lora的远程农业监测与控制系统 目的:通过Lora子节点采集好各种传感器的信息,发送给汇聚节点,汇聚节点将数据通过ESP8266上传至云端,使用了微信小程序进行监测与控制

热爱生活、奋斗前行 7841

全网最全的Python常见命令大全,建议收藏,以防备用

Python是目前最流行的编程语言之一。它是一种强大而简单的语言,几乎可以在任何开发环境中使用。2021年Stack Overflow调查显示,Python是大多数开发人员最想使用的编程语言。(文末送福利)借助Jupyter Notebook、Google Colaboratory和在线编译器等工具,您可以开始使用这种语言,而无需担心安装任何东西。但是,如果您想更进一步并享受Python等通用语言的真正力量(尤其是通过创建复杂的应用程序),迟早您需要学习使用CLI或命令行界面。

Python_cocola的博客 6507

Tera Term介绍和使用指南

Tera Term 是一个用于 Windows 操作系统的免费终端模拟器和串口通信软件。它主要用于在计算机和其他设备之间建立串口通信连接,例如通过串行线缆连接到设备如路由器、开发板或嵌入式系统。Tera Term 支持多种通信协议和功能,包括 Telnet、SSH 和串口通信。提供了一个终端窗口,模拟了常见的终端类型,如VT100。支持通过串口与设备进行通信,可用于与嵌入式系统、微控制器等设备进行连接。提供 Telnet 和 SSH 功能,可用于通过网络连接到远程主机。

weixin_49423593的博客 1万+

Spring Boot 与 Redisson 版本适配深度解析

Spring Boot 与 Redisson 的版本适配是一个动态演进的过程。开发者需要密切关注两者官方的版本更新日志,建立完善的版本验证机制。本文提供的适配方案基于当前最新技术状态(2024年1月),建议在实际生产环境中通过灰度发布策略验证版本兼容性。只有深入理解底层技术原理,才能在分布式系统的星辰大海中稳健航行。延伸阅读Spring Boot 官方迁移指南。

fudaihb的博客 1083

Python 不愧是脚本之王,这7种命令行用法你全部 get 了吗?

给大家分享一波Python全套学习资料,免费!免费!免费!微信扫描下方优快云官方认证二维码即可领取啦!

weixin_68789096的博客 967

SAP 公司间采购简介

SAP公司间采购(Intercompany Procurement)是指企业集团内部不同法人实体之间的采购和销售流程。这种流程在跨国公司或有多个独立运营子公司的企业中非常常见。SAP提供了标准的功能来处理公司间采购,确保财务和物流流程的透明性和效率。以下是SAP公司间采购的基本流程及其相关模块的简介。

我小时候很黑的博客 1378

Python命令及使用方法

在Windows开始菜单选择“命令提示符”,就进入到命令行模式,它的提示符类似C:>: 在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>&amp

zhjadsf的博客 1万+

C#串口通信上位机开发实战:轻松实现硬件控制与数据交互

摘要:本文介绍如何使用C#开发串口通信上位机应用,实现与硬件设备(如传感器、PLC等)的数据交互。文章涵盖串口通信原理、开发环境配置、功能实现(串口连接管理、数据收发、实时显示)及UI设计,重点讲解SerialPort类的应用、多线程数据接收处理和错误优化。通过Windows Forms构建直观界面,帮助开发者快速掌握工业控制和自动化系统中的串口通信技术,为物联网和智能设备开发提供实用解决方案。全文约150字。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 3029

《网络安全自学教程》- 防火墙原理分析与Windows防火墙使用配置

防火墙分类及原理,Windows开启防火墙,Windows防火墙添加策略,

wangyuxiang946的博客 1万+

刚毕业的表弟年薪40w......程序员薪资天花板?

前不久,“腾讯2022校招-应届毕业生年薪 40 万”刷屏了… 尽管互联网大厂的薪资高不算什么新鲜事儿,但这个热搜仍然让我大受震撼。 腾讯校招官网显示,2022届腾讯校招开放技术、产品、设计等岗位共计 78 个,且以IT岗为主。 另据各大招聘平台统计数据,腾讯2022届研发岗应届生基础月薪在1.7万-2.3万之间,签字费(针对优秀人才的额外奖励)3万,股票依据不同等级从6万到20万不等,就算是最低等级的“白菜包”,年薪总包也远超40万元。 职业发展 作为一个代码打工仔,对于绝大部分程序员来说,想要成为牛

xx_nm98的博客 1792

什么是 SAP S/4HANA 的 Brown Field 迁移和 Green Field 迁移

Brown Field实施涉及升级现有的 SAP 环境并继续使用一些遗留组件。它类似于传统升级,因为它涉及软件更新、一些数据转换和一些业务流程的调整。它仍然具有破坏性,但比Green Field实施要少得多。如果你是风险厌恶者,倾向于逐步使用 S/4HANA 的功能,或担心 S/4HANA Green Field方法的成本,那么你可能更喜欢这种方法。混合方法结合了Brown Field和Green Field迁移的一些元素。它从公司的 SAP 系统的副本开始,包括配置设置和定制。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1324

Python正则表达式,看完这篇文章就够了...#华为云·寻找黑马程序员#

正则表达式简介 正则表达式,是一个特殊的字符序列,又称规则表达式(英语:Regular Expression,在代码中常简写为regex、regexp 或RE),本质而言是一种小型的,高度专业化的编程语言。 Python 自1.5版本起增加了re 模块,re 模块使Python语言拥有全部的正则表达式功能。 正则语法表 关于正则语法表,别想其他的都背过就行了。不管你是python还是其他...

华为云官方博客 8689

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Flask开发VIP版HttpServer #华为云·寻找黑马程序员#

欢迎添加华为云小助手微信(微信号:HWCloud002或HWCloud003),输入关键字“加群”,加入华为云线上技术讨论群;输入关键字“最新活动”,获取华为云最新特惠促销。华为云诸多技术大咖、特惠活动等你来撩! Python HttpServer python2与python3都可以基于SimpleHTTPServer,快速创建一个http服务器,但方法略有不同。 首先进入你需要...

华为云官方博客 3078

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Flask开发vip版HttpServer #华为云·寻找黑马程序员#

python HttpServer python2与python3都可以基于SimpleHTTPServer,快速创建一个http服务器,但方法略有不同。 首先进入你需要设置的http服务器目录 (我以自己电脑路径:F:/Working~Study) ,即进入到该目录下,然后: python2: python -m SimpleHTTPServer 8888 python3: python -m...

华为云官方博客 3523

Python-Excel 模块哪家强 #华为云·寻找黑马程序员#

python操作excel 最原始的莫过于两位老牌黄金搭档xlrd xlwt了,针对二者的封装有如下模块: xlutils & xlrd & xlwt 为什么把这三个一起说? 首先,xlutils封装了xlrd xlwt,所以在使用前,会先下载这两个依赖的模块。 其次,这两个模块主要用于处理xls文件,而对xlsx的文件处理很挫,甚至xlwt不支持… 但为何到现在依然在使用这些...

华为云官方博客 2405

将Android手机打造成你的Python开发者桌面#华为云·寻找黑马程序员#

欢迎添加华为云小助手微信(微信号:HWCloud002或HWCloud003),输入关键字“加群”,加入华为云线上技术讨论群;输入关键字“最新活动”,获取华为云最新特惠促销。华为云诸多技术大咖、特惠活动等你来撩! 超神利器… 这款工具在上篇文章当Python遇到Andriod手机,那么,万物皆可盘后,就开始准备了。为什么? 首先,Qpython不支持lxml这个模块,而了解pytho...

华为云官方博客 3798

Python开发还在用virtualenv?不如了解下pipenv...#华为云·寻找黑马程序员#

又见 Kenneth Reitz 之前公众号写了一篇文章爬虫新宠requests_html 带你甄别2019虚假大学,其中主要是为了介绍模块**requests_html,这个模块的作者还开发了requests模块,相当的犀利。没错,他就是Kenneth Reitz,一个被编程耽误的摄影师,哈哈,网上还有他的一些励志故事,喜欢的朋友可以去搜搜,个人比较崇拜他。那么,今天又要介绍他的另外一个牛1...

华为云官方博客 3684

#华为云·寻找黑马程序员# 如何实现一个优雅的Python的Json序列化库

在Python的世界里,将一个对象以json格式进行序列化或反序列化一直是一个问题。Python标准库里面提供了json序列化的工具,我们可以简单的用json.dumps来将一个对象序列化。但是这种序列化仅支持python内置的基本类型,对于自定义的类,我们将得到Object of type A is not JSON serializable的错误。 有很多种方法可以用来支持这种序列化,这里有...

华为云官方博客 2154

使用Python开发小说下载器,不再为下载小说而发愁 #华为云·寻找黑马程序员#

需求分析 免费的小说网比较多,我看的比较多的是笔趣阁。这个网站基本收费的章节刚更新,它就能同步更新,简直不要太叼。既然要批量下载小说,肯定要分析这个网站了… 在搜索栏输入地址后,发送post请求获取数据,然后根据url解析,模拟操作即可。打开Fiddler,chrome搜索一下伏天氏,然后看看抓取到的日志流: 代码实现 在我们开始编码前,先得看下parameters中的这几个参数。 s...

华为云官方博客 3115

史上最全python字符串操作指南 #华为云·寻找黑马程序员#

惨不忍睹 拿出了看家的老中医野广告,都没能拯救惨淡的selenium剧集。上周五和朋友聊天,说希望看到一些python基础的知识。本来还担心更新基础的东西没人看,但现在看来,最差不过selenium系列了…哈哈。 虽然说更新基础知识,但基础的东西不代表不重要或者说你们都会,不信走着… 记得有句话说到,**当一件事请遇到了正则,那它将变为两件事。看到这句话,你们以为我要讲python正则?NO… 日...

SlaughterDevil的博客 522

大型情感剧集Selenium:3_元素定位 #华为云·寻找黑马程序员#

关于昨天的文章 今天有朋友反馈,代码运行的时候,selenium提示警告 DeprecationWarning: use options instead of chrome_options driver = webdriver.Chrome(chrome_options=options) 本来以为是我的selenium版本太低了,可以上官网看到3.141.0是最新版本啊,最后把pyth...

华为云官方博客 3450

python让你再也不为文章配图与素材发愁,让高清图片占满你的硬盘! #华为云·寻找黑马程序员#

欢迎添加华为云小助手微信(微信号:HWCloud002或HWCloud003),输入关键字“加群”,加入华为云线上技术讨论群;输入关键字“最新活动”,获取华为云最新特惠促销。华为云诸多技术大咖、特惠活动等你来撩! 电脑硬盘里的图片 收藏夹的照片(硬盘里的女神)看了又删,去年夏天后就没聊过天…很久前有这么一首歌很火,不知道大家听过没,只是括号里的歌词被改成了现在的样子。那么,你们以为我...

华为云官方博客 3607

将Android手机打造成你的python开发者桌面#华为云·寻找黑马程序员#

看破不说破 上一篇的selenium文章中说到了网盘的免费破解工具,存在监听剪切板,获取用户资源达到盈利目的的情况。这点有些人知道有些人不知道,但是我这个耿直Boy在公众号刚说出来,就被人恶意举报了: 文章内容很简单,介绍了selenium的四种截图方式,全文都是带着大家读源码了解功能,中间指出了一篇博客中错误的内容引导,何来的原创违规?呵呵…所以,话到嘴边留三分,以后吐槽的东西还是尽量少说吧。...

SlaughterDevil的博客 702

大型情感剧集Selenium:1_介绍 #华为云·寻找黑马程序员#

写在前面的话 昨天说到,之后一阵子,打算把selenium的知识进行一个复习和系统的总结。要说明以下几点: 因为是系统的总结,所以文章具备连贯性,但我尽量将较为集中的知识点整理在一起发 由浅入深的知识内容,开篇肯定不会有太多的技术涉及,觉得无趣还望轻喷 并不是所有朋友都喜欢或都有意愿学习selenium,所以在这个系列中还是会穿插发一些其他的文章 毕竟文章的总结是基于python和sel...

华为云官方博客 1408
上一篇: 史上最全python字符串操作指南 #华为云·寻找黑马程序员#
下一篇: 爬虫新宠requests_html 带你甄别2019虚假大学 #华为云·寻找黑马程序员#
清风 python
博客等级 码龄9年 64粉丝 75原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值