Python脚本参数接收_sys与argparse解析【指导】
发布时间 - 2026-01-01 00:00:00 点击率:次sys.argv适合简单场景,argparse更适合正式项目;前者仅提供原始参数列表,需手动解析和校验,后者支持自动帮助、类型检查、默认值及子命令等高级功能。
Python脚本接收命令行参数,sys.argv适合简单场景,argparse更适合正式项目——它自动处理帮助信息、类型校验、参数组合和错误提示。
用 sys.argv 快速获取原始参数
sys.argv 是一个列表,argv[0] 是脚本名,后续元素是传入的字符串参数。它不解析结构,也不做类型转换,适合写一次性小工具或调试时快速取值。
- 直接访问索引即可:比如
python script.py input.txt -v中,sys.argv[1]是"input.txt",sys.argv[2]是"-v" - 需手动判断参数是否存在、是否符合预期格式,否则容易触发
IndexError或类型错误 - 不支持
--help、默认值、选项分组等特性,也不校验参数合法性
用 argparse 规范化定义和解析参数
argparse 是 Python 标准库中推荐的参数解析模块,适用于需要可维护性、可读性和用户友好性的脚本。
- 声明式定义参数:用
add_argument()明确指定名称、类型(type=int)、是否必需(required=True)、默认值(default="log.txt")等 - 自动支持短选项(
-f)、长选项(--file)、位置参数、可选参数、互斥组(add_mutually_exclusive_group()) - 调用
parser.parse_args()后返回命名空间对象,属性名即参数名(如args.input),无需索引操作 - 输入
--help或参数错误时,自动输出清晰的帮助文本,无需额外编码
常见搭配与实用技巧
实际使用中,常结合两者优势或补充功能:
- 位置参数 + 可选参数混合:例如
python convert.py source.json --output target.yaml --format yaml - 支持子命令:用

add_subparsers()实现类似git commit、git push的多模式脚本 - 从配置文件或环境变量回退:
argparse解析后,可用os.getenv()或configparser做兜底 - 自定义类型函数:传入
type=valid_date,在解析阶段就校验日期格式并抛出易懂错误
什么时候该选哪个?
判断依据主要是脚本用途和协作需求:
- 单人临时脚本、测试用例、CI 中简单调用 →
sys.argv足够轻量 - 要交付给他人、需文档化、可能频繁更新参数、涉及多个选项组合 → 必须用
argparse - 已有老脚本用
sys.argv,但开始出现if len(sys.argv) 这类硬编码判断 → 是重构为argparse的明确信号
# python
# js
# git
# json
# 编码
# 工具
# 环境变量
# 配置文件
# python脚本
# 标准库
# red
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
如何用腾讯建站主机快速创建免费网站?
焦点电影公司作品,电影焦点结局是什么?
如何在 Pandas 中基于一列条件计算另一列的分组均值
php结合redis实现高并发下的抢购、秒杀功能的实例
iOS正则表达式验证手机号、邮箱、身份证号等
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
如何在腾讯云免费申请建站?
iOS验证手机号的正则表达式
如何在IIS服务器上快速部署高效网站?
Laravel如何实现多对多模型关联?(Eloquent教程)
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
如何挑选高效建站主机与优质域名?
IOS倒计时设置UIButton标题title的抖动问题
Laravel怎么判断请求类型_Laravel Request isMethod用法
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
Laravel模型事件有哪些_Laravel Model Event生命周期详解
小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像
如何用美橙互联一键搭建多站合一网站?
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
Laravel如何实现模型的全局作用域?(Global Scope示例)
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
手机软键盘弹出时影响布局的解决方法
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
Bootstrap整体框架之CSS12栅格系统
Android自定义控件实现温度旋转按钮效果
Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
使用C语言编写圣诞表白程序
利用vue写todolist单页应用
如何在万网利用已有域名快速建站?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
Android Socket接口实现即时通讯实例代码
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
如何用搬瓦工VPS快速搭建个人网站?
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】
如何快速搭建高效WAP手机网站吸引移动用户?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】
详解CentOS6.5 安装 MySQL5.1.71的方法
香港服务器租用每月最低只需15元?
Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复
打开php文件提示内存不足_怎么调整php内存限制【解决方案】
Laravel如何集成Inertia.js与Vue/React?(安装配置)
如何快速搭建支持数据库操作的智能建站平台?


