当前位置: 首页 > article >正文

Python argparse实战:5分钟教你为自动化脚本添加可配置参数(比如定时备份、文件处理)

Python argparse实战5分钟为自动化脚本添加可配置参数每次修改脚本里的硬编码路径时我都忍不住想要是能像Linux命令那样通过参数动态配置该多好。上周维护服务器时一个简单的日志清理脚本因为目录变更被迫改了三次代码——这种低效体验促使我彻底研究了argparse模块。现在任何需要定期运行的自动化任务无论是备份、转换还是清理我都能在5分钟内将其改造成支持命令行参数的专业工具。1. 为什么你的脚本需要参数化想象你写了个备份脚本核心功能是把/data/uploads同步到/backups。某天业务调整需要测试环境备份到/backups/test生产环境备份到/backups/prod临时增加一个--dry-run参数预览备份过程如果路径直接写在代码里你不得不每次修改都打开脚本文件小心翼翼地替换字符串反复测试避免拼写错误而参数化的脚本允许你通过命令行直接指定python backup.py --source /data/prod --dest /backups/prod --dry-run参数化带来的三大优势灵活性同一脚本适应不同场景可维护性业务变更无需修改源代码易用性--help自动生成使用文档2. 基础参数配置让路径动态可调我们从最简单的场景开始改造一个写死路径的备份脚本。原始代码可能是这样的source /data/uploads destination /backups # ...备份逻辑...2.1 初始化参数解析器首先导入模块并创建解析器对象import argparse parser argparse.ArgumentParser( description文件备份工具, formatter_classargparse.ArgumentDefaultsHelpFormatter )关键参数说明description脚本帮助信息头部的描述文本formatter_class让帮助信息显示默认值后面会看到效果2.2 添加路径参数用add_argument()方法定义需要的参数parser.add_argument( --source, typestr, requiredTrue, help需要备份的源目录路径, default/data/uploads # 建议始终设置默认值 ) parser.add_argument( --dest, typestr, help备份目标目录路径, default/backups )参数配置技巧参数作用典型场景type指定参数类型str/int/float等required是否必须提供关键参数设为Truedefault默认值为可选参数提供兜底值help参数说明会显示在帮助信息中2.3 使用解析结果通过parse_args()获取用户输入args parser.parse_args() print(f准备从 {args.source} 备份到 {args.dest})现在运行脚本时就能动态指定路径了# 使用默认路径 python backup.py # 自定义路径 python backup.py --source /data/prod --dest /backups/prod3. 高级参数技巧提升脚本专业性基础路径配置满足大部分需求后我们通过几个实用技巧让脚本更专业。3.1 布尔开关参数添加--overwrite控制是否覆盖已有文件parser.add_argument( --overwrite, actionstore_true, # 关键设置 help覆盖目标目录已有文件, defaultFalse )这种参数使用时不需要值# 启用覆盖模式 python backup.py --overwrite # 不启用默认 python backup.py3.2 试运行模式开发时常用的--dry-run参数parser.add_argument( --dry-run, actionstore_true, help只显示将要执行的操作, defaultFalse )在代码中可以通过判断args.dry_run来跳过实际操作if args.dry_run: print([试运行] 将复制:, file_list) else: # 实际备份逻辑3.3 参数组与互斥参数对于复杂的场景可以创建参数组advanced parser.add_argument_group(高级选项) advanced.add_argument(--verbose, actionstore_true) advanced.add_argument(--threads, typeint, default4)互斥参数比如只能选择压缩或不压缩group parser.add_mutually_exclusive_group() group.add_argument(--compress, actionstore_true) group.add_argument(--no-compress, actionstore_true)4. 实战完整备份脚本改造让我们看一个完整的示例将硬编码脚本改造成专业工具改造前的脚本import shutil src /data/uploads dst /backups shutil.copytree(src, dst)参数化后的版本#!/usr/bin/env python3 import argparse import shutil import sys def create_parser(): parser argparse.ArgumentParser( description智能文件备份工具, formatter_classargparse.ArgumentDefaultsHelpFormatter ) # 必需参数 parser.add_argument( --source, requiredTrue, help源目录路径 ) # 可选参数 parser.add_argument( --dest, default/backups, help目标目录路径 ) parser.add_argument( --overwrite, actionstore_true, help覆盖已存在的文件 ) parser.add_argument( --dry-run, actionstore_true, help只显示将要执行的操作 ) return parser def main(): parser create_parser() args parser.parse_args() if args.dry_run: print(f[试运行] 将从 {args.source} 备份到 {args.dest}) return try: if args.overwrite: shutil.rmtree(args.dest, ignore_errorsTrue) shutil.copytree(args.source, args.dest) print(备份完成) except Exception as e: print(f备份失败: {e}, filesys.stderr) sys.exit(1) if __name__ __main__: main()使用示例# 查看帮助 python backup.py -h # 实际备份 python backup.py --source /data/prod --dest /backups/2023 --overwrite # 试运行 python backup.py --source /data/test --dry-run5. 错误处理与最佳实践参数解析看似简单但实际使用时有几个容易踩的坑5.1 路径验证用户输入的路径可能不存在应该提前检查import os if not os.path.exists(args.source): parser.error(f源目录不存在: {args.source})5.2 类型扩展除了基本类型可以自定义验证逻辑def valid_path(path): if not os.path.isabs(path): raise argparse.ArgumentTypeError(需要绝对路径) return path parser.add_argument(--config, typevalid_path)5.3 参数命名规范遵循Unix传统风格短参数-v单字母长参数--verbose关联设置parser.add_argument(-v, --verbose, actionstore_true)5.4 帮助信息优化通过epilog添加示例parser argparse.ArgumentParser( epilog示例: python backup.py --source /data --dest /backups python backup.py --source /tmp --dry-run )在服务器维护过程中我发现最实用的参数组合往往是# 生产环境标准备份 python backup.py --source /data/prod --dest /nas/backups --verbose # 开发环境试运行 python backup.py --source /data/dev --dry-run

相关文章:

Python argparse实战:5分钟教你为自动化脚本添加可配置参数(比如定时备份、文件处理)

Python argparse实战:5分钟为自动化脚本添加可配置参数 每次修改脚本里的硬编码路径时,我都忍不住想:要是能像Linux命令那样通过参数动态配置该多好。上周维护服务器时,一个简单的日志清理脚本因为目录变更被迫改了三次代码——这…...

手把手教你用Qwen3-VL-8B:上传图片就能提问的AI助手搭建

手把手教你用Qwen3-VL-8B:上传图片就能提问的AI助手搭建 1. 为什么你需要这个AI助手 想象一下这样的场景:你正在整理手机里上千张照片,突然看到一张多年前的旅行照,却想不起来具体是在哪里拍的。或者你收到一张复杂的图表&#…...

SQLite JDBC驱动深度解析:Java嵌入式数据库开发的终极指南

SQLite JDBC驱动深度解析:Java嵌入式数据库开发的终极指南 【免费下载链接】sqlite-jdbc SQLite JDBC Driver 项目地址: https://gitcode.com/gh_mirrors/sq/sqlite-jdbc 在当今微服务和云原生架构盛行的时代,轻量级、零配置的嵌入式数据库解决方…...

2026爬虫入门终极指南:Requests+BeautifulSoup从网页抓取到数据库存储全流程

前言 我见过太多学爬虫的新手:花了一周时间背完了Requests和BeautifulSoup的所有API,但是真的要爬一个实际的网站的时候,还是两眼一抹黑。要么是请求返回403,要么是解析出来的数据全是乱码,要么是存到数据库的时候报错…...

Unity UI性能优化实战:别再让你的Image和ScrollRect频繁触发Rebuild了

Unity UI性能优化实战:别再让你的Image和ScrollRect频繁触发Rebuild了 在开发复杂UI界面时,你是否遇到过这样的场景:当打开背包、商城或排行榜界面时,帧率突然下降,界面卡顿明显?使用Unity Profiler分析后&…...

Linux RT 调度器的 rt_nr_running:RT 任务数量统计

一、核心概念解析1.1 RT 任务基础Linux 实时任务支持 SCHED_FIFO(先进先出)与 SCHED_RR(时间片轮转)两种策略,优先级范围 1~99,始终抢占 CFS 普通任务。可运行任务:处于 TASK_RUNNING 状态、已入…...

鸣潮自动化工具终极指南:3步实现游戏时间自由,告别重复刷本

鸣潮自动化工具终极指南:3步实现游戏时间自由,告别重复刷本 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves …...

蓝桥杯Scratch真题避坑指南:绘制金字塔时,90%的人会算错砖块起始位置

蓝桥杯Scratch真题避坑指南:绘制金字塔时,90%的人会算错砖块起始位置 在Scratch编程的世界里,绘制几何图形是检验逻辑思维和数学计算能力的绝佳方式。蓝桥杯选拔赛中频繁出现的"绘制金字塔"题目,看似简单却暗藏玄机。许…...

哔哩下载姬DownKyi完整指南:3分钟学会免费下载B站高清视频

哔哩下载姬DownKyi完整指南:3分钟学会免费下载B站高清视频 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&a…...

Mac用户专属:12306购票助手如何帮你轻松抢到春运车票

Mac用户专属:12306购票助手如何帮你轻松抢到春运车票 【免费下载链接】12306ForMac An unofficial 12306 Client for Mac 项目地址: https://gitcode.com/gh_mirrors/12/12306ForMac 作为一名Mac用户,你是否曾为春运抢票而烦恼?当1230…...

BKS势函数详解:从石英玻璃到LAMMPS模拟,你的二氧化硅参数选对了吗?

BKS势函数深度解析:二氧化硅模拟中的参数选择与实战指南 在分子动力学模拟领域,势函数的选择往往决定了整个研究的成败。对于二氧化硅(SiO₂)这种在自然界和工业应用中无处不在的材料,BKS(Buckingham-Coulomb)势函数因其出色的平衡性和广泛的…...

Linux服务器开机自动挂载网络磁盘(NFS)完整配置流程与排错指南

Linux服务器NFS网络磁盘持久化挂载实战指南 在分布式架构与数据密集型应用场景中,网络文件系统(NFS)的稳定挂载直接关系到业务连续性。当服务器意外重启后,若共享存储未能自动恢复连接,可能导致应用服务雪崩式瘫痪。本…...

JasperReports生成PDF中文乱码?手把手教你搞定字体配置(附fonts.jar打包教程)

JasperReports中文PDF生成终极指南:从字体配置到生产环境部署 你是否遇到过这样的场景?在JasperStudio里精心设计的中文报表模板,预览时一切正常,但一旦集成到Java应用中生成PDF,中文内容就神秘消失了——要么变成乱码…...

从原理到调参:一文读懂CycleMorph在2D/3D图像配准中的核心技术与实践陷阱

从原理到调参:CycleMorph在2D/3D图像配准中的核心技术解析与实战避坑指南 医学影像分析中,精确的图像配准一直是影响诊断和治疗规划的关键技术。传统方法在处理复杂形变时往往面临拓扑结构破坏、计算效率低下等瓶颈。CycleMorph通过引入循环一致性约束和…...

用Python搞定电力系统潮流计算?手把手教你用PyPower跑通第一个OPF算例

从零开始用Python实现电力系统潮流计算:PyPower实战指南 电力系统潮流计算是电力工程师的必备技能之一。想象一下,你刚接手一个电网优化项目,领导要求你快速评估不同运行方案下的电压分布和功率流动。传统方法可能需要依赖商业软件&#xff…...

R语言实战:用RMST分析肝硬化患者生存数据,告别风险比依赖

R语言实战:用RMST解锁肝硬化患者生存分析新视角 当临床医生面对肝硬化患者的生存数据时,传统风险比分析常让人陷入解释困境——特别是当生存曲线交叉或删失严重时。限制平均生存时间(RMST)提供了一种直观的解决方案:它直接回答"治疗组患…...

避开这些坑!用STC15单片机做超声波测距时,定时器溢出和温度补偿到底该怎么处理?

STC15单片机超声波测距实战:定时器溢出与温度补偿的深度优化方案 当超声波测距模块在STC15F2K60S2单片机上运行时,你是否遇到过这些情况:测量数据偶尔出现异常跳变,远距离测量结果不稳定,甚至程序莫名其妙进入死循环&a…...

如何让音乐成为你的社交名片:3个神奇技巧让Discord好友实时看到你的播放列表 [特殊字符]

如何让音乐成为你的社交名片:3个神奇技巧让Discord好友实时看到你的播放列表 🎵 【免费下载链接】NetEase-Cloud-Music-DiscordRPC 在Discord上显示网抑云/QQ音乐. Enables Discord Rich Presence For Netease Cloud Music/Tencent QQ Music. 项目地址…...

别再死记硬背ACL规则了!用华为eNSP模拟器5分钟搞定防火墙基础配置

华为eNSP实战:5分钟可视化掌握ACL防火墙配置精髓 刚接触网络设备配置时,ACL规则总让人望而生畏——那些密密麻麻的命令行和抽象的五元组匹配逻辑,像一堵墙挡在初学者面前。但当我第一次用华为eNSP模拟器完成整个ACL实验流程后,突然…...

2026届必备的五大降AI率网站推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 有一类免费的 AI 论文工具,这些为学术写作起到了提供高效解决方案作用。这类系统…...

别再手抄谱了!用Sibelius把MIDI文件一键转成五线谱(附Cubase协作流程)

别再手抄谱了!用Sibelius把MIDI文件一键转成五线谱(附Cubase协作流程) 每次在DAW里完成编曲后,最头疼的就是把那些灵光一现的旋律变成规整的五线谱。传统的手动记谱不仅耗时费力,还容易出错。作为从业十年的游戏音效师…...

从刷题到项目:5个STL高阶函数(next_permutation/lower_bound/unique)的巧妙应用场景

从刷题到项目:5个STL高阶函数的实战应用场景 在算法面试和实际项目开发中,STL(Standard Template Library)的高阶函数往往能让我们写出更简洁高效的代码。很多开发者虽然熟悉sort、find这些基础函数,但对next_permutat…...

别再乱买随身WiFi了!手把手教你用手机App(Cellular-Z)查清本地运营商频段,精准避坑

手机秒变信号探测器:3步教你用Cellular-Z避开随身WiFi选购雷区 每次看到电商平台上那些标榜"全网通"的随身WiFi设备,总忍不住想问:它们真的能在你家客厅稳定上网吗?去年我表弟就踩过这个坑——花500多买的"全频段支…...

用STM32和DHT11做个智能温湿度计:从硬件接线到软件调试的全过程记录

STM32与DHT11打造智能温湿度监测系统:从硬件搭建到功能扩展全指南 在物联网和智能家居快速发展的今天,环境监测已成为许多项目的核心需求。本文将带你从零开始构建一个基于STM32和DHT11的智能温湿度监测系统,不仅实现基础数据采集&#xff0…...

别再只看RMS粗糙度了!用Huray模型手把手教你预测PCB铜箔高频损耗(附Python代码)

突破传统:用Huray雪球模型精准预测PCB铜箔高频损耗的工程实践 在高速PCB设计领域,GHz频段下的信号完整性分析一直是工程师们的痛点。传统基于RMS粗糙度的Hammerstad模型在低频段尚可应付,但当频率突破10GHz后,其预测误差往往高达3…...

TrendForge 精选 9 个热门开源项目:Python 最活跃,FinceptTerminal 获星最多

TrendForge 每日精选 9 个热门开源项目:Python 最活跃,FinceptTerminal 获星最多 TrendForge 每日都会精选最具潜力的开源项目,今日共收录 9 个热门项目,且提供了智能中文翻译版,方便大家理解项目描述。 今日最热项目 …...

从软木塞到工程泡沫:泊松比如何定义材料的变形世界

1. 泊松比:材料变形的"身份证" 第一次听说泊松比这个词,是在大学材料力学课上。当时教授拿着橡胶带用力拉扯,问我们:"为什么橡皮筋变细了?"这个看似简单的现象背后,藏着材料科学中最重…...

RWKV7-1.5B-world惊艳效果:输入‘画一只猫’→文本生成→‘Describe in English’→专业动物学描述

RWKV7-1.5B-world惊艳效果:输入画一只猫→文本生成→Describe in English→专业动物学描述 1. 模型概述 RWKV7-1.5B-world是基于第7代RWKV架构的轻量级双语对话模型,拥有15亿参数。该模型采用创新的线性注意力机制替代传统Transformer的自回归结构&…...

IIT海德拉巴与微软研究院联手揭开多模态推理模型的隐秘缺陷

这项由印度理工学院海德拉巴分校计算机科学与工程系与微软研究院(班加罗尔)联合开展的研究,以预印本形式于2026年4月9日发布在arXiv平台,编号为arXiv:2604.08476。感兴趣的读者可通过该编号检索完整论文。一、答对了,但…...

别再用Docker镜像打包Dify客户端了!C# 14原生AOT单文件部署正在重构云原生交付范式(限时开放压测数据集)

第一章:Dify客户端云原生交付范式的演进与重构动因在AI应用规模化落地的背景下,Dify客户端从单体打包部署逐步转向以Kubernetes为核心的云原生交付体系。这一转变并非单纯的技术升级,而是应对多租户隔离、边缘协同推理、热插拔插件治理及跨云…...