|
发表于 昨天 19:29
From FishC Mobile
|
显示全部楼层
def parse_args(argv):
"""
解析命令行参数
Args:
argv: 参数列表(不含程序名)
Returns:
根据命令返回相应的元组
Raises:
SystemExit: 当命令未知或参数个数不匹配时
"""
# 检查参数列表是否为空
if not argv:
raise SystemExit("usage: cp|mv|rm ...")
# 获取命令
command = argv[0]
# 根据不同的命令进行解析
if command == "cp":
# cp 命令需要恰好2个参数
if len(argv) != 3:
raise SystemExit("usage: cp|mv|rm ...")
return ("copy", argv[1], argv[2])
elif command == "mv":
# mv 命令需要恰好2个参数
if len(argv) != 3:
raise SystemExit("usage: cp|mv|rm ...")
return ("move", argv[1], argv[2])
elif command == "rm":
# rm 命令可以有0个或多个参数
return ("remove", argv[1:])
else:
# 未知命令
raise SystemExit("usage: cp|mv|rm ...")
# 测试代码
if __name__ == "__main__":
# 测试用例
test_cases = [
["cp", "a.txt", "b.txt"],
["mv", "old", "new"],
["rm", "foo"],
["rm", "a", "b", "c"],
["rm"],
["cp", "a"], # 这个应该触发异常
["ls"] # 这个应该触发异常
]
for i, test_case in enumerate(test_cases):
print(f"测试用例 {i+1}: {test_case}")
try:
result = parse_args(test_case)
print(f"结果: {result}")
except SystemExit as e:
print(f"异常: {e}")
print("-" * 30) |
|