[特殊字符] 玩转 Python 命令行参数:从 `-m` 到 `argparse` 的全攻略
🐍 玩转 Python 命令行参数:从 -m
到 argparse
的全攻略
📌 摘要
在日常开发中,我们常常需要让 Python 脚本更灵活、更通用,而命令行参数正是实现这一目标的利器。本文将带你深入浅出地了解 Python 命令行参数的几种常见用法,包括 -m
模块运行、sys.argv
参数读取、argparse
模块解析等技巧。无论你是在写自动化脚本、构建 CLI 工具,还是调试项目,这篇文章都能帮你少走弯路。
🎬 一、什么是命令行参数?
命令行参数是你在运行 Python 脚本时,通过命令行传递给程序的额外信息。比如:
python my_script.py hello world
这条命令中,hello
和 world
就是传给 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 小伙伴们!下一篇我们可以聊聊如何用 click
或 typer
构建更高级的命令行工具。你感兴趣吗?😄