Python | 使用argparse解析命令行参数

Shell——函数参数传递 上述 getopts 后面的 “s:k:y:” 是用户可以给函数提供的选项参数,每个参数还都可以含有参数,因为他们后面都加了 “:”,这个参数会被存到 系统变量 $OPTARG 中。getopts 是 bash 内置的一个命令,通过该命令,用户可以获取函数的选项以及参数值,或者是脚本的命令行选项以及参数值。可以发现,上述的变量 var 的值 是另一个变量(name)的变量名,,此时 可以通过两种方法来引用第二个变量。用户可以通过 系统变量 $# 来获取脚本的参数的个数,当然,函数也是。 阅读详情

今天是Python专题第27篇文章,我们来聊聊Python当中的命令行参数工具argparse。

命令行参数工具是我们非常常用的工具,比如当我们做实验希望调节参数的时候,如果参数都是通过硬编码写在代码当中的话,我们每次修改参数都需要修改对应的代码和逻辑显然这不太方便。比较好的办法就是把必要的参数设置成通过命令行传入的形式,这样我们只需要在运行的时候修改参数就可以了。

sys.argv

解析命令行传入参数最简单的办法就是通过sys.argv,sys.argv可以获取到我们通过命令行传入的参数。

import sys

print(sys.argv)

用法很简单,只需要调用sys.argv即可。argv是一个数组,如果参数有多个,我们可以通过下标进行访问。但是有一点需要注意,argv当中存储的结果是从Python调用开始的。

我们来看一个例子,我们随意传入一些参数,print sys.argv之后是这样的。

python test.py -a -c -d=222 
>>> ['test.py', '-a', '-c', '-d=222']

也就是说我们python运行test.py这个文件名也当做参数之一,所以我们要获取自定义参数的话需要从argv[1]开始。

sys.argv的好处是方便,我们只需要访问它就可以拿到传入的参数了。但是缺点也很明显,就是功能太少了。假如我们是看其他大神的代码,我们想要知道运行的时候需要传入什么参数,以及每个参数代表什么含义就做不到了。

为了解决这个问题,我们需要使用封装更多功能的工具,也是本篇文章的核心——argparse。

基本用法

argparse是Python当中的一个库,我们需要先import一下,这个库我没记错应该是Python自带的,也不需要安装,我们直接就可以使用。

在我们使用之前,我们需要先初始化这个parse,也就是一个参数解析器。

# 这里ArgumentParser可以传入一个字符串,表示用途
parser = argparse.ArgumentParser()
parser.parse_args()

这个时候其实就已经有了一个解析器了,我们在运行的时候可以传入参数-h,表示help,也就是查看目前解析器当中定义的参数。由于我们现在什么也没有,所以能显示出来的就只有help。

必选参数

首先我们来介绍必选参数,它的定义和函数当中的必填参数是一样的,也就是说我们运行程序必须要的参数。如果不传,那么程序不应该执行会进行报错并提示。

定义必选参数的方法非常简单,我们只需要通过add_argument传入参数的名称就可以了。

import argparse

parser =
Python argparse:实现命令行参数的优雅解析 在Python脚本开发中,我们常常需要让脚本能够接收用户从命令行输入的参数。例如,一个文件处理脚本可能需要用户指定要处理的文件路径,或者一个数据处理脚本可能需要用户输入数据的起始和结束时间。命令行参数解析就是将用户在命令行输入的字符串解析成程序可以使用的变量。Python的argparse模块提供了一种简单而强大的方式来实现这一功能,它可以自动生成帮助和使用信息,处理参数类型和默认值,让我们的脚本更加灵活和易用。本文介绍了Python的argparse模块,它可以帮助我们优雅地解析命令行参数。 阅读详情

相关推荐

python使用argparse解析命令行参数

python使用argparse解析命令行参数 你的程序如何能够解析命令行选项(位于sys.argv中) 参考:

data+scenario+science+insight 420

用Python的argparse轻松实现命令行参数解析

本文旨在深入介绍如何使用Python的argparse模块轻松实现命令行参数解析。首先会阐述argparse的概念基础,包括其背景、发展历程和相关术语。接着构建理论框架,剖析其原理和局限性。然后进行架构设计,展示系统分解和组件交互。在实现机制部分,会进行算法复杂度分析和代码优化。实际应用中,介绍实施策略和部署考虑因素。高级考量涉及扩展动态、安全影响等。最后综合拓展,提及跨领域应用和研究前沿等内容,帮助不同技术水平的读者掌握使用argparse进行命令行参数解析的方法。

AI Python 编程之道的博客 309

CXF使用EndpointImpl发布WebService加入拦截器

CXF使用EndpointImpl发布WebService加入拦截器

JS获取URL中参数值(QueryString)的4种方法分享

方法一:正则法 代码如下:function getQueryString(name) {    var reg = new RegExp(‘(^|&)’ + name + ‘=([^&]*)(&|$)’, ‘i’);    var r = [removed].search.substr(1).match(reg);    if (r != null) {        return unescape(r[2]);    }    return null;}// 这样调用:alert(GetQueryString(“参数名1”)); alert(GetQueryString(“参数名

Speedtree学习笔记(案例)——拥有多种材质的植物如何导入使用(以草为例)

注:Speedtree无论保存还是导入模型其存储路径不可有中文。 第一步拆分草的模型 根据所需的材质去拆分(例:假若草的果实,茎秆和叶子是不同的材质那么就需拆分为三份;假若画的全部颜色及材质一样就没有必要去拆分模型) 第二步导入草的模型 在Mesh面板中依次导入草的模型——Do nothing additional right now 第三步扩大草的生长区域范围(可省略)...

L人青的博客 5721

富芮坤FR801xH蓝牙协议栈启动流程和notify实现温度数据主动上传

文章目录一、蓝牙协议栈启动流程1.1 初始化代码1.2 初始化流程1.3 回调函数里的初始化二、notify实现2.1 notify介绍2.2 notify实现2.3.1 定义数据2.3.2 获取连接号conidx2.3.3 gatt_notification函数的使用三、notify温度上传测试3.1 蓝牙调试工具3.2 蓝牙调试器设置3.3 测试结果四、参考链接   基于sdk开发的好处是方便项目的快速落地,现在用的是SDK里面的源文件,目前只是学习FR801xH芯片的特性,裁剪这个SDK需要点时间,

weixin_43810563的博客 4318

ESP32开发环境避坑指南:用Thonny烧录MicroPython固件时常见的5个错误及解决方法

本文针对ESP32开发新手,详细解析了使用Thonny IDE烧录MicroPython固件时最常见的5个错误及其解决方案。内容涵盖驱动安装、端口识别、固件烧录失败、版本兼容性、连接不稳定以及文件系统操作异常等核心痛点,并提供硬件层面的深度排查指南,帮助开发者高效搭建稳定的ESP32开发环境。

weixin_29189003的博客 404

Keil5 安装与卸载全攻略:从零开始到完美避坑

本文提供了Keil5集成开发环境的完整安装与卸载指南。针对嵌入式开发新手,详细解析了安装前的关键准备、MDK核心与C51双环境的安装激活步骤、常见问题排查,并重点介绍了如何彻底卸载软件以避免残留问题,帮助用户从零开始搭建稳定高效的开发环境。

weixin_29172963的博客 636

Android 关于佳博和汉印蓝牙热敏打印机开发,Android程序员必经的实践之路

针对于上面的问题,我总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料。(包括Java在Android开发中应用、APP框架知识体系、高级UI、全方位性能调优,NDK开发,音视频技术,人工智能技术,跨平台技术等技术资料),希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

2401_84149570的博客 1021

61、神经科学中的分岔与双分子反应研究

本文探讨了神经科学中的分岔现象与双分子反应建模。在神经元网络中,通过分析四细胞网络的呼吸节律振荡,揭示了分岔对振荡频率和占空比的影响,并区分了单神经元与网络层面的分岔特性。在神经群体模型中,系统参数变化引发的分岔可导致振荡、混沌等动态行为转变,文中详细介绍了局部分岔、全局分岔和高余维分岔的机制,并以Jansen-Rit模型为例展示了输入水平变化下的分岔过程。在分子层面,重点介绍了MWC模型在描述配体与多位点蛋白质结合中的应用,涵盖其构象状态、平衡常数及统计因子。研究表明,分岔理论和双分子反应建模为理解神经系

yog99的博客 79

【Qwen2微调实战】LLaMA-Factory框架对Qwen2-7B模型的微调实践

在人工智能的浪潮中,大型语言模型(LLMs)正逐渐成为研究和应用的热点。它们在自然语言处理(NLP)的各个领域,如文本生成、翻译、问答等任务中展现出了卓越的能力。Qwen2-7B模型,作为该领域的佼佼者,不仅因其庞大的参数量和强大的表示能力受到关注,更因其在微调后能够更好地适应特定任务而备受关注。本文将详细介绍如何利用LLaMA-Factory这一高效的微调框架对Qwen2-7B进行微调,以期达到提升模型在特定任务上的表现。

寻道AI,探索AI无限可能! 2万+

将 SAP BTP ABAP environment 与 SAP S/4HANA Cloud 公有云版集成:从架构理念到落地实战

本文探讨了在SAP云环境中实现ABAP扩展应用与S/4HANA Cloud系统集成的技术方案。通过建立标准化的远程通信通道,开发者可在SAP BTP ABAP环境中开发扩展应用,同时安全访问S/4HANA Cloud的核心业务数据和服务。文章详细介绍了整体架构设计、开发实现步骤(包括定义通信场景、生成服务消费模型和编写调用代码)以及管理员在S/4HANA侧的配置工作(创建通信安排和技术用户)。通过一个业务伙伴自助注册平台的案例,展示了如何在不修改标准系统的情况下实现云扩展,体现了SAP"干净核心&

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

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Camera2Demo

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

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: Go语言 | goroutine不只有基础的用法,还有这些你不知道的操作
下一篇: 机器学习,详解SVM软间隔与对偶问题
TechFlow
博客等级 码龄7年 347粉丝 276原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值