以下是一个详细的 Python 脚本示例,演示如何接收并处理从 CMD(命令行)传递的参数,涵盖多种参数类型和常见使用场景:
1. 基础示例:直接使用 sys.argv
python
# cmd_args_basic.py
import sys
if __name__ == "__main__":
# sys.argv[0] 是脚本名称,后续元素为参数
args = sys.argv[1:] # 获取所有输入参数(排除脚本名)
print("参数列表:", args)CMD 调用
cmd
python cmd_args_basic.py arg1 arg2输出
参数列表: ['arg1', 'arg2']2. 进阶示例:使用 argparse 解析复杂参数
python
# cmd_args_advanced.py
import argparse
def main():
# 创建解析器
parser = argparse.ArgumentParser(description="一个支持复杂参数的示例脚本")
# 添加参数规则
parser.add_argument("input_file", help="输入文件路径")
parser.add_argument("-o", "--output", help="输出文件路径(可选)", default="output.txt")
parser.add_argument("-n", "--number", type=int, help="整数参数(必选)", required=True)
parser.add_argument("--verbose", action="store_true", help="启用详细输出模式")
# 解析参数
args = parser.parse_args()
# 使用参数
print(f"输入文件: {args.input_file}")
print(f"输出文件: {args.output}")
print(f"数字参数: {args.number}")
print(f"详细模式: {'开启' if args.verbose else '关闭'}")
if __name__ == "__main__":
main()CMD 调用
cmd
python cmd_args_advanced.py data.txt -n 100 --verbose输出
输入文件: data.txt
输出文件: output.txt
数字参数: 100
详细模式: 开启3. 参数类型与验证
示例:限制参数范围和类型
python
# cmd_args_validation.py
import argparse
def positive_int(value):
ivalue = int(value)
if ivalue <= 0:
raise argparse.ArgumentTypeError("必须是正整数")
return ivalue
parser = argparse.ArgumentParser()
parser.add_argument("--size", type=positive_int, required=True)
parser.add_argument("--color", choices=["red", "green", "blue"]) # 限制可选值
args = parser.parse_args()
print(f"尺寸: {args.size}, 颜色: {args.color}")CMD 调用
cmd
python cmd_args_validation.py --size 5 --color green输出
尺寸: 5, 颜色: green4. 处理布尔标志
示例:开关参数
python
# cmd_args_boolean.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--enable", action="store_true", help="启用功能")
parser.add_argument("--disable", action="store_false", help="禁用功能", dest="flag")
args = parser.parse_args()
print(f"启用状态: {args.enable}")
print(f"禁用状态: {args.flag}")CMD 调用
cmd
python cmd_args_boolean.py --enable输出
启用状态: True
禁用状态: True # 默认值未修改5. 处理带空格的文件路径
示例:用引号包裹路径
python
# cmd_args_path.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--file", required=True)
args = parser.parse_args()
print(f"文件路径: {args.file}")CMD 调用
cmd
python cmd_args_path.py --file "C:\My Documents\file.txt"输出
文件路径: C:\My Documents\file.txt6. 常见错误处理
错误:缺少必选参数
cmd
python cmd_args_advanced.py data.txt输出
usage: cmd_args_advanced.py [-h] -n NUMBER [--verbose] input_file
cmd_args_advanced.py: error: the following arguments are required: -n/--number解决方法
cmd
# 补充必选参数
python cmd_args_advanced.py data.txt -n 100总结
| 场景 | Python 代码 | CMD 调用示例 |
|---|---|---|
| 基础参数接收 | sys.argv[1:] | python script.py arg1 |
| 复杂参数解析 | argparse 模块 | python script.py --input data.txt |
| 参数类型验证 | type=positive_int, choices=["red", "green"] | python script.py --size 5 --color red |
| 布尔开关 | action="store_true" 或 action="store_false" | python script.py --enable |
| 文件路径处理 | 使用引号包裹路径 | python script.py --file "path with space" |
通过以上示例,可以覆盖绝大多数命令行参数处理需求。