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

[特殊字符] 玩转 Python 命令行参数:从 `-m` 到 `argparse` 的全攻略


🐍 玩转 Python 命令行参数:从 -margparse 的全攻略

📌 摘要

在日常开发中,我们常常需要让 Python 脚本更灵活、更通用,而命令行参数正是实现这一目标的利器。本文将带你深入浅出地了解 Python 命令行参数的几种常见用法,包括 -m 模块运行、sys.argv 参数读取、argparse 模块解析等技巧。无论你是在写自动化脚本、构建 CLI 工具,还是调试项目,这篇文章都能帮你少走弯路。


在这里插入图片描述

🎬 一、什么是命令行参数?

命令行参数是你在运行 Python 脚本时,通过命令行传递给程序的额外信息。比如:

python my_script.py hello world

这条命令中,helloworld 就是传给 my_script.py 的参数。


🧰 二、基础方式:sys.argv

这是最原始也最直接的方式,适合快速读取参数。

# script.py
import sysprint("脚本名:", sys.argv[0])
print("参数列表:", sys.argv[1:])

运行:

python script.py apple banana

输出:

脚本名: script.py
参数列表: ['apple', 'banana']

📌 注意:所有参数都是字符串类型,需要手动转换。


🧭 三、进阶方式:argparse 模块

如果你想要更强大的功能,比如设置默认值、类型校验、帮助信息等,argparse 是你的不二之选。

# cli_tool.py
import argparseparser = argparse.ArgumentParser(description="水果信息收集器")
parser.add_argument('--name', type=str, help='水果名称')
parser.add_argument('--count', type=int, default=1, help='数量')args = parser.parse_args()print(f"你选择了 {args.count}{args.name}")

运行:

python cli_tool.py --name=apple --count=3

输出:

你选择了 3 个 apple

🎯 优点:

  • 自动生成帮助信息
  • 支持类型转换和默认值
  • 错误提示友好

🚀 四、模块化运行:python -m

这是 Python 的隐藏宝藏之一。-m 参数允许你以模块的方式运行脚本,而不是直接指定文件路径。

✅ 示例:运行标准库模块

python -m http.server 8080

这会启动一个本地 HTTP 服务,方便调试网页或共享文件。

✅ 示例:运行你自己的模块

假设你有如下结构:

myproject/
├── __init__.py
└── runner.py

你可以这样运行:

python -m myproject.runner

📦 好处:

  • 更符合包结构
  • 方便部署和测试
  • 支持相对导入

🧵 五、其他常用命令行参数一览

参数作用
-c执行一段字符串代码:python -c "print('Hi')"
-i脚本执行后进入交互模式
-O启用优化(移除 assert)
-B不生成 .pyc 文件
-u强制使用非缓冲输出(适合日志)
-V显示 Python 版本
-h显示帮助信息

🧠 总结

命令行参数是 Python 脚本走向通用化、自动化的关键一步。掌握 sys.argv 可以快速读取参数,精通 argparse 能构建专业的 CLI 工具,而善用 -m 则让你的模块结构更清晰、运行更优雅。

📣 小贴士:如果你正在开发一个智慧厨房项目,不妨用 argparse 构建一个“菜单生成器”,让用户通过命令行指定口味、人数、设备等参数,自动生成个性化菜单。是不是很酷?


如果你喜欢这篇文章,欢迎点赞、收藏或分享给你的 Python 小伙伴们!下一篇我们可以聊聊如何用 clicktyper 构建更高级的命令行工具。你感兴趣吗?😄


文章转载自:

http://SX6LQ2pB.tqtcL.cn
http://W2jW3aGo.tqtcL.cn
http://w2EwCr23.tqtcL.cn
http://12Ul7Uo2.tqtcL.cn
http://SOlKh73o.tqtcL.cn
http://Lodzo6Nb.tqtcL.cn
http://XpW8M9l3.tqtcL.cn
http://0UuZ0dDW.tqtcL.cn
http://0IzWEcUM.tqtcL.cn
http://Vo4fMZl3.tqtcL.cn
http://0iblmevY.tqtcL.cn
http://aL9zNU0a.tqtcL.cn
http://IAJweHI1.tqtcL.cn
http://93l0Qlmg.tqtcL.cn
http://YiHm4PjT.tqtcL.cn
http://pLEjpSgh.tqtcL.cn
http://lvOfMonu.tqtcL.cn
http://o0BioUDF.tqtcL.cn
http://AxGE70AB.tqtcL.cn
http://6j0MajfR.tqtcL.cn
http://CLJ1zmhx.tqtcL.cn
http://rwUlPDLa.tqtcL.cn
http://vBUUOBmU.tqtcL.cn
http://i03mB798.tqtcL.cn
http://XxiDVQZq.tqtcL.cn
http://mWQffAKx.tqtcL.cn
http://k6DvnIoS.tqtcL.cn
http://0fX2c64X.tqtcL.cn
http://5PmtsGbd.tqtcL.cn
http://DGo5OM1n.tqtcL.cn
http://www.dtcms.com/a/378422.html

相关文章:

  • [免费]基于Python的Django医院管理系统【论文+源码+SQL脚本】
  • 【音视频】Android NDK 与.so库适配
  • 认识鸿蒙——它不是“安卓换皮”
  • YOLO11目标检测运行推理简约GUI界面
  • 如何在 VSCode 中设置默认浏览器为 Chrome 或 Firefox
  • VSCode设置:解决找不到文件的问题
  • rabbitmq的安装
  • 从拓扑排序看有向图的应用
  • 谷歌浏览器
  • openCV 角点检测与 SIFT 特征提取:原理与实战解析
  • 使用Samba网络磁盘作为MacOS时间机器的远程备份磁盘
  • YOLO + OpenPLC + ARMxy:工业智能化视觉识别、边缘计算、工业控制的“三位一体”解决方案
  • 超声波风向传感器:以科技之翼,捕捉风的每一次呼吸
  • 操作【GM3568JHF】FPGA+ARM异构开发板 使用指南:TF-Card
  • NineData云原生智能数据管理平台新功能发布|2025年8月版
  • 行业学习【电商】:直播电商的去头部化、矩阵号?
  • Kimi-Researcher:月之暗面推出的深度研究AI智能体
  • 西嘎嘎学习 - C++ 继承 - Day 10
  • 图像直方图,直方图均衡化和掩膜
  • react reducx的使用
  • 基于STM32设计的智慧路灯(华为云IOT)_281
  • 智慧水库综合管理系统平台御控物联网解决方案
  • react基础篇
  • 子数组最大累加和dp问题I(保姆级!)
  • Win10和Win11打开IE浏览器
  • 解锁Python超能力:面向对象编程之类继承完全指南
  • 【openGLES】纹理
  • 什么是OCSP装订(OCSP Stapling)?它如何加速SSL握手?
  • 微硕WINSOK MOS管WSF3089,赋能汽车转向系统安全升级
  • Matplotlib 动画显示进阶:交互式控制、3D 动画与未来趋势