Python脚本参数接收_sys与argparse解析【指导】
技术百科
舞夢輝影
发布时间:2026-01-01
浏览: 次 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
# json
# 环境变量
# 编码
# 标准库
# git
# red
# python脚本
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Python音视频处理高级项目教程_FFmpegP
- 如何高效删除 NumPy 二维数组中所有元素相同的
- 如何在JavaScript中动态拼接PHP的bas
- 如何使用Golang实现函数指针_函数变量与回调示
- Go 中实现 Python urllib.quot
- Python网页解析流程_html结构说明【指导】
- 本地php环境打开php文件直接下载_浏览器解析p
- Windows 10怎么录屏_Windows 10
- Win11怎么设置任务栏对齐方式_Windows1
- 一文详解网站被黑客入侵挂马解决办法
- Win11怎么更改任务栏位置_修改注册表将Win1
- Win11屏幕亮度突然变暗怎么解决_自动变暗问题处
- Win11怎么更改鼠标指针方案_Windows11
- c++23 std::expected怎么用 c+
- Win11怎么禁用键盘自带键盘_Win11笔记本禁
- Win11怎么退出微软账户_切换Win11为本地账
- 如何在Golang中优化文件读写性能_使用缓冲和并
- c# 在高并发下使用反射发射(Reflection
- 如何在Golang中实现微服务服务拆分_Golan
- Python lxml的etree和Element
- Windows服务启动类型恢复方法_错误修改导致的
- 如何在 Go 中判断变量是否为函数类型
- 如何使用Golang table-driven f
- 如何在Golang中处理模块冲突_解决依赖版本不兼
- 如何使用Golang实现容器健康检查_监控和自动重
- Python文件操作优化_大文件与流处理解析【教程
- 如何使用Golang reflect检查方法数量_
- Win11怎么修改DNS服务器 Win11设置DN
- Win11怎么设置屏保时间_调整Win11屏幕保护
- MAC怎么一键隐藏桌面所有图标_MAC极简模式切换
- php485读数据时阻塞怎么办_php485非阻塞
- Windows怎样关闭锁屏广告_Windows关闭
- Windows10电脑怎么查看硬盘通电时间_Win
- Windows怎样拦截WPS弹窗广告_Window
- 本地php环境出现502错误_nginx或apac
- Win11怎么关闭通知中心_Windows11系统
- Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱
- Win11怎么设置系统还原_Windows11系统
- Win10怎样清理C盘Steam游戏缓存_Win1
- Win11系统占用空间大怎么办 Win11深度瘦身
- c++如何利用doxygen生成开发文档_c++
- Win11 explorer.exe频繁崩溃_修复
- Linux怎么查找死循环进程_Linux系统负载分
- Win10怎么卸载鲁大师_Win10彻底卸载鲁大师
- Windows 11无法安全删除U盘提示设备正在使
- Win11怎么开启游戏工具栏_Windows11
- Win10怎么卸载金山毒霸_Win10彻底卸载金山
- 如何使用Golang defer优化性能_减少不必
- c++获取当前时间戳_c++ time函数使用详解
- Win11怎么设置右键刷新选项_Windows11

help
QQ客服