在Python中,可以通过命令行参数来传递信息给脚本。这通常是通过sys模块来实现的,该模块提供了访问与Python解释器紧密相关的变量和函数的功能。sys.argv 是Python内置的简单参数接收方式,通过命令行传入的参数会被存储为列表。sys.argv[0] 是脚本名,后续元素为用户输入的参数。
python通过命令行传入参数
在Python中,可以通过sys.argv或argparse模块从命令行接收参数。以下是两种方法的详细说明和示例:
方法1:使用 sys.argv
sys.argv 是一个列表,存储命令行传入的参数(按空格分隔),其中:
sys.argv[0] 是脚本名称,
sys.argv[1] 开始是用户输入的参数。
示例代码:
pythonimport sysif __name__ == "__main__":# 打印所有参数print("所有参数:", sys.argv)# 获取第一个参数(索引从1开始)if len(sys.argv) > 1:arg1 = sys.argv[1]print("第一个参数:", arg1)else:print("未传入参数")
运行方式:
bashpython script.py hello 123
输出:
所有参数: ['script.py', 'hello', '123']第一个参数: hello
缺点:
需手动处理参数类型。
不支持参数帮助文档或可选参数。
方法2:使用 argparse
argparse 是Python标准库,支持参数类型、帮助信息、默认值等高级功能。
示例代码:
pythonimport argparseif __name__ == "__main__":# 创建解析器parser = argparse.ArgumentParser(description="这是一个参数解析示例")# 添加参数parser.add_argument("--name", type=str, help="用户名", required=True)parser.add_argument("--age", type=int, help="年龄", default=18)parser.add_argument("--verbose", action="store_true", help="是否输出详细信息")# 解析参数args = parser.parse_args()# 使用参数print(f"你好, {args.name}!")print(f"年龄: {args.age}")if args.verbose:print("详细模式已开启")
运行方式:
bashpython script.py --name Alice --age 25 --verbose
输出:
你好, Alice!年龄: 25详细模式已开启
关键功能:
自动生成帮助:通过 -h 或 --help 查看参数说明。
bashpython script.py -h
输出:
usage: script.py [-h] --name NAME [--age AGE] [--verbose]这是一个参数解析示例optional arguments:-h, --help 显示帮助信息--name NAME 用户名--age AGE 年龄 (默认: 18)--verbose 是否输出详细信息
参数类型转换:自动将输入转为 int/float 等类型。
必填参数:通过 required=True 强制要求参数。
布尔开关:action="store_true" 表示参数存在时为 True。
总结
简单场景:用 sys.argv 快速获取参数。
复杂需求:用 argparse 实现参数验证、帮助文档和类型转换。
通过这两种方法,Python可以灵活处理命令行输入,适合开发脚本工具或自动化任务。最常用的方法是使用sys.argv,这是一个列表,包含了命令行中传递给Python脚本的参数。