sys.argv是python中获取命令行参数的基础方式,为字符串列表,首项为脚本名,其余为传入参数,需手动类型转换且须校验长度防索引错误。

在 Python 中,sys.argv 是最基础、最直接获取命令行参数的方式。它是一个列表,存储了运行脚本时输入的全部命令行内容,其中 sys.argv[0] 是脚本文件名,后续元素才是你传入的外部参数。
理解 sys.argv 的结构
sys.argv 本质是终端输入命令被空格(或制表符)分割后的字符串列表,所有元素都是字符串类型,**不会自动转换为数字或布尔值**。
- 执行
python script.py hello 42 True→sys.argv == ['script.py', 'hello', '42', 'True']
- 即使传入的是数字或路径,也得手动转换:
int(sys.argv[2]) 或 <code>os.path.abspath(sys.argv[1]) - 含空格的参数需用引号包裹:
python script.py "my file.txt" 100→sys.argv[1]就是"my file.txt"
安全获取参数的常用写法
直接索引容易触发 IndexError,建议先检查长度或使用异常处理:
让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限
- 用
len(sys.argv)判断:例如要求至少 2 个参数(脚本名 + 1 个用户参数),就写if len(sys.argv) - 用
try/except捕获错误更健壮:
try:
input_file = sys.argv[1]
count = int(sys.argv[2])
except (IndexError, ValueError) as e:
print("用法: python script.py ")
sys.exit(1)
处理带选项的参数(简易版)
虽然 argparse 更专业,但用 sys.argv 也能快速支持简单开关:
- 检测是否存在某个标志:例如
if "-v" in sys.argv:表示启用详细模式 - 按位置配对键值:如
python script.py -o output.txt -n 5,可遍历sys.argv[1:],遇到-o就取下一个元素作为输出文件名 - 注意:这种手动解析不处理引号嵌套、短选项合并(如
-vf)等边界情况,仅适合内部小工具
和 argparse 的关系说明
sys.argv 是底层原始数据,argparse 是在其之上构建的高级接口。调用 parser.parse_args() 时,默认就是解析 sys.argv[1:]。你可以把 sys.argv 看作“原料”,而 argparse 是“厨房”——做小菜直接用原料没问题,做大餐建议进厨房。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










