对于python命令行,你应该这么做才专业

python命令行 命令行应用(Command-Line Application,CLI)是通过终端或命令提示符交互的程序,它接收文本输入并产生文本输出。Python是开发命令行应用的理想语言,因为它拥有丰富的标准库和第三方包支持。 代码解释:运行示例: 使用getopt 代码解释: 高级特性:安装: 示例: click优势:安装: 示例: typer特点: 进度条 交互式提示 打包分发CLI应用 setup.py配置 关键点: 生成独立的可执行文件,无需Python环境 测试要点: 功能: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的人,谢谢。

Linux命令行运行Python脚本:从基础执行到专业工具化部署 在Linux系统管理与自动化开发中,命令行脚本执行是核心技能。其原理在于操作系统通过解释器调用和权限控制来运行程序,技术价值体现在提升运维效率、实现任务自动化及服务部署。应用场景广泛覆盖数据处理、系统监控、Web服务后台运行等。本文聚焦Python脚本在Linux环境下的多种执行方式,深入解析shebang行、虚拟环境隔离等关键实践,并探讨如何通过argparse、setuptools等工具将脚本转化为可分发、可维护的专业命令行工具,助力开发者构建健壮的生产级应用。 阅读详情

相关推荐

Python argparse模块详解:从基础到实战,构建专业命令行工具

命令行参数解析是程序与用户交互的关键接口,它允许程序在运行时动态接收外部输入,是实现脚本灵活性和可配置性的基础技术。其核心原理在于将用户通过终端输入的参数进行解析、验证并转换为程序内部可用的数据结构。在Python生态中,argparse模块作为标准库组件,提供了声明式的参数定义方式,能自动生成帮助文档、处理类型转换与验证,极大提升了开发效率和程序的健壮性。掌握argparse对于构建自动化工具、数据处理脚本及可集成的CLI应用具有重要价值,是提升代码工程化水平的关键。本文以argparse模块为核心,通过

cuixie2370的博客 442

python常用命令行命令

python的常用命令

wyzhaojun的博客 6576

EDA环境下的LSF进阶调优:如何为Cadence/VCS等工具正确配置cgroups与daemon starter

本文深入探讨了在EDA环境中如何为Cadence/VCS等工具正确配置LSF的cgroups与daemon starter,解决资源分配与特殊应用兼容性问题。通过详细解析cgroups技术、daemon starter配置及混合资源管理策略,帮助提升LSF集群的效率和稳定性,特别适用于高性能计算和芯片设计场景。

weixin_33724046的博客 461

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

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

Python_cocola的博客 6507

我用 AI 做了个开源地图工具:从 OpenStreetMap 一键获取全国 AOI/POI 数据

本文介绍了一款免费开源的OSM数据查询与可视化工具,旨在解决Overpass QL语法晦涩、数据获取门槛高的问题。工具支持面数据(AOI)、点数据(POI)及路网三种查询模式,内置30+常用模板实现一键检索。具备高德与OSM双底图切换、坐标自动转换功能,支持GeoJSON、SHP、CSV多格式导出,同时保留自定义查询能力。作为纯HTML单文件应用,可零成本部署至GitHub Pages在线使用。该工具有效降低了地理数据获取难度,是替代商业地图API、高效提取全球开源地理信息的实用利器。

weixin_45812624的博客 587

Anthropic三件套重构AI工作流:Claude Code、Design与桌面宠物实战指南

AI协作已从单点工具迈入系统化工作流阶段。理解AI作为‘协作者’而非‘执行器’的本质,是提升工程效率的关键前提;其核心在于对任务调度、自适应推理与人机交互边界的重新定义。Claude Code的xhigh effort机制体现了分层推理的工程智慧,Claude Design以HTML为原生设计语言实现设计-代码一体化,而桌面宠物则将抽象的token消耗具象为可感知的硬件反馈。这些能力共同指向一个趋势:AI工作流正从prompt调参走向契约式委派、从界面割裂走向跨模态统一。本文结合Opus 4.7最新实践,解

a4512138的专栏 484

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

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

weixin_68789096的博客 967

基于LightGBM和多模型融合的量化交易研究:沪深300为例【附代码】

📊 数据科学与大数据专业 | 数据分析与模型构建 | 数据驱动决策✨ 专业领域:数据挖掘与清洗大数据处理与存储技术机器学习与深度学习模型数据可视化与报告生成分布式计算与云计算数据安全与隐私保护💡 擅长工具:Python/R/Matlab 数据分析与建模Hadoop/Spark 大数据处理平台SQL数据库管理与优化Tableau/Power BI 数据可视化工具TensorFlow/PyTorch 深度学习框架✅数据科学与大数据技术毕业论文【数据】

lagougongzuoshi的博客 1670

Python命令及使用方法

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

zhjadsf的博客 1万+

道威棱镜的设计参考

道威棱镜的设计参考

weixin_72050316的博客 380

3.PCIe协议分析1-预备知识点

PCIE协议分析1主要讲一下四方面: PCI-E配置空间 PCI-E地址映射 PCI-E Bar空间 PCI-E层级结构详谈 (1)PCIE配置空间 我们过来学习PCIE的同学应该都接触各种类型的功能芯片吧,这些功能芯片连接在电路里面我们可以认为它是一个外部设备,这些设备里面有自己独有的寄存器区域,比如SDRAM里面的ID寄存器或者其他配置寄存器。好的,其实我们PCIE板卡也相当...

一个早起的程序员 4144

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

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

xx_nm98的博客 1792

华为OD机试 - 名字的漂亮度(Java 牛客练习题)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个不同字母拥有相同的“漂亮度”。给出一个字符串,该字符串仅由小写字母组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。给出多个字符串,计算每个字符串最大可能的“漂亮度”。第一行一个整数N,接下来N行每行一个字符串。数据范围:输入的名字长度满足。每个字符串可能的最大漂亮程度。

学Java,找哪吒 1786

对于python命令行参数使用,你应该这么做才专业

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

华为云官方博客 2670

水文仿真软件:SWMM (Storm Water Management Model)_(6).地理信息系统(GIS)与SWMM数据交换

地理信息系统(GIS)与SWMM数据交换是水文仿真中的一个重要环节。通过合理的数据准备、导入、导出和校验,可以确保模型的准确性和实用性。本文介绍了使用SWMM GIS Add-on和Python脚本进行数据交换的方法,并提供了一些优化建议和常见问题的解决方案。希望这些内容能帮助读者更好地进行GIS与SWMM的数据交换,提高水文仿真的效率和质量。

kkchenjj的博客 578

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

python只能以命令行方式工作吗_对于python命令行,你应该这么做才专业

论吃苦和朋友聊天,说到了学习的问题。不知道何时听过一句话,因为不想吃生活的苦,所以我忍受着学习的苦。生活的苦只要躺着就能吃到,而学习的苦却要我们逼着自己去吃。每天下班回来等到孩子睡了开始学习,学的差不多了再开始写博客,然后发公众号,天天两三点让最近的身体有些吃不消,光坐班车睡过站就好几次,司机现在都认识我了,到站先喊下我。牛气...一分耕耘不一定会有一分收获,但要想有所收获,只能靠持续的付出才有机...

weixin_39588252的博客 722

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

webservice type大写参数_对于python命令行参数使用,你应该这么做才专业

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

weixin_39801465的博客 166

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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

论吃苦 和朋友聊天,说到了学习的问题。不知道何时听过一句话,***因为不想吃生活的苦,所以我忍受着学习的苦。生活的苦只要躺着就能吃到,而学习的苦却要我们逼着自己去吃。***每天下班回来等到孩子睡了开始学习,学的差不多了再开始写博客,然后发公众号,天天两三点让最近的身体有些吃不消,光坐班车睡过站就好几次,司机现在都认识我了,到站先喊下我。牛气…一分耕耘不一定会有一分收获,但要想有所收获,只能靠持续的...

SlaughterDevil的博客 337

Python Click库:5分钟快速打造专业命令行工具

装饰器驱动:用等装饰器快速定义命令,无需手动解析参数;自动生成帮助:函数文档字符串自动转为帮助信息,无需手动编写--help逻辑;类型校验:支持intboolPath等类型,自动校验参数合法性,减少错误处理代码;子命令支持:用轻松实现多命令集成,适合复杂工具;友好交互:支持颜色输出、确认提示、全局参数共享,提升用户体验。如果你需要开发命令行工具(如脚本工具、服务管理工具、CLI应用),Click绝对是首选——它能让你用最少的代码,打造出专业级别的命令行工具。打包成可执行文件:用将脚本打包为exe。

m0_58868237的博客 1213

打造专业命令行工具:Blessings与其他Python库协同使用

Blessings 是一个轻量级且实用的 Python 终端功能包装库,它为开发者提供了简洁的 API 来处理终端着色、样式设置和光标定位等功能。通过使用 Blessings,开发者可以轻松创建具有专业外观的命令行应用程序,而无需深入了解复杂的终端控制序列。 ## 为什么选择 Blessings? 在众多 Python 终端处理库中,Blessings 以其独特的优势脱颖而出: - **简洁

gitblog_00326的博客 1000

chatgpt赋能python:Python如何隐藏命令行窗口?

本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。🧡AI职场汇报智能办公文案写作效率提升教程 🧡专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。

a058046的博客 3475

python命令行输入函数回退_python与命令行

在使用R语言时,我们要使用的工具仅仅是用于编写代码的脚本文件(.R文件),和运行代码的控制台。但是使用python时,却要增加一些其他工具,比如我们经常要和命令行打交道,有时要使用文本编辑器来编写更大型的代码更方便。对于非软件专业的人来说,命令行是一个非常陌生的工具。平常我们使用电脑都只是鼠标操作,要写什么内容的时候才会使用键盘,几乎不会有人会用键盘来打开程序、下载应用等。那是因为电脑操作系统已经...

weixin_39806065的博客 792
上一篇: 史上最全python字符串操作指南
下一篇: 爬虫新宠requests_html 带你甄别2019虚假大学
清风Python
博客等级 码龄7年 406粉丝 267原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值