Python命令行脚本开发教程_argparse与sys模块应用

发布时间 - 2025-12-31 00:00:00    点击率:
argparse是Python命令行脚本开发的推荐标准方案,sys.argv适合简单场景;前者支持自动帮助、类型转换、校验等,后者仅返回原始参数列表,需手动处理。

Python命令行脚本开发中,argparse是推荐的标准方案,sys.argv适合简单场景。两者不是互斥关系,而是按需选择:小工具用sys够快,正式脚本用argparse更健壮、可维护。

用sys.argv快速获取参数

sys.argv是最底层的方式,返回命令行输入的字符串列表,sys.argv[0]是脚本名,后续元素是传入的参数。适合单参数、无选项、调试用的小脚本。

  • 直接索引取值,例如filename = sys.argv[1](注意加try/except防报错)
  • len(sys.argv)判断参数个数是否符合预期
  • 不支持自动帮助信息、类型转换、参数校验,全靠自己写逻辑

用argparse构建专业命令行接口

argparse是Python标准库中专为命令行解析设计的模块,能自动生成帮助文档、处理短/长选项、类型转换、默认值、互斥组等。

  • 先创建ArgumentParser对象,调用add_argument()定义参数,如parser.add_argument("-f", "--file", help="输入文件路径")
  • 调用parser.parse_args()后得到命名空间对象,属性名即参数名(如args.file
  • 支持type=intdefault="xxx"required=Truenargs="+"(接收多个值)等实用参数
  • 运行脚本时加-h--help自动输出格式化帮助页

常见组合技巧与避坑点

实际开发中常混合使用两种方式,或在argparse基础上做增强。

  • argparse.ArgumentParser(prog="mytool")自定义程序名,避免显示完整路径
  • 对必需但可能为空的参数(如配置文件),用const + nargs="?"实现“开关式”参数
  • 避免直接修改sys.argv再传给argparse;如需预处理,应先提取、再构造新参数列表
  • 子命令支持用add_subparsers(),适合git commitgit push这类多动作工具

一个最小可用示例

以下是一个带文件输入、是否静默模式、输出行数的脚本骨架:

import argparse

def main(): parser = argparse.ArgumentParser(description="统计文本行数") parser.add_argument("file", help="要读取的文件路径") parser.add_argument("-s", "--silent", action="store_true", help="不打印内容,只输出行数") args = parser.parse_args()

with open(args.file) as f:
    lines = f.readlines()
print(len(lines))
if not args.silent:
    print("".join(lines[:3]))  # 打印前3行示意

if name == "main": main()

保存为count.py后,可运行python count.py data.txt -spython count.py data.txt --help验证效果。


# python  # git  # 工具  # ai  # 配置文件  # 标准库  # red 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  如何快速查询网站的真实建站时间?  如何在服务器上三步完成建站并提升流量?  如何用低价快速搭建高质量网站?  jquery插件bootstrapValidator表单验证详解  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  如何用好域名打造高点击率的自主建站?  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  简单实现jsp分页  如何基于云服务器快速搭建个人网站?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  如何快速完成中国万网建站详细流程?  详解Android中Activity的四大启动模式实验简述  如何在企业微信快速生成手机电脑官网?  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  C#如何调用原生C++ COM对象详解  Laravel安装步骤详细教程_Laravel环境搭建指南  如何在Windows环境下新建FTP站点并设置权限?  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  Laravel怎么在Controller之外的地方验证数据  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  如何快速搭建高效香港服务器网站?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  Laravel怎么在Blade中安全地输出原始HTML内容  Android利用动画实现背景逐渐变暗  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  如何快速搭建高效简练网站?  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  中山网站制作网页,中山新生登记系统登记流程?  网站制作软件有哪些,制图软件有哪些?  如何在阿里云香港服务器快速搭建网站?  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  高性能网站服务器部署指南:稳定运行与安全配置优化方案  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  如何确保西部建站助手FTP传输的安全性?  Laravel如何生成API文档?(Swagger/OpenAPI教程)  大连网站制作公司哪家好一点,大连买房网站哪个好?  如何在Windows服务器上快速搭建网站?