使用argparse模块解析命令行参数
在 Python 中,argparse
模块用于解析命令行参数,使得脚本可以更灵活地接受用户输入。以下是如何使用 argparse
模块解析命令行参数的详细介绍和示例。
基本用法
示例:简单的命令行参数解析
首先,创建一个简单的脚本来解析命令行参数。我们将创建一个脚本,该脚本接受两个整数并打印它们的和。
import argparse
def main():
# 创建解析器
parser = argparse.ArgumentParser(description="计算两个整数的和")
# 添加参数
parser.add_argument("num1", type=int, help="第一个整数")
parser.add_argument("num2", type=int, help="第二个整数")
# 解析参数
args = parser.parse_args()
# 计算和
result = args.num1 + args.num2
print(f"{args.num1} + {args.num2} = {result}")
if __name__ == "__main__":
main()
运行示例
保存上述脚本为 sum.py
,然后在命令行中运行:
python sum.py 3 5
输出:
3 + 5 = 8
添加可选参数
示例:带有可选参数的脚本
现在我们将扩展示例,添加一个可选参数来选择不同的运算(加法、减法、乘法、除法)。
import argparse
def main():
# 创建解析器
parser = argparse.ArgumentParser(description="进行简单的算术运算")
# 添加位置参数
parser.add_argument("num1", type=int, help="第一个整数")
parser.add_argument("num2", type=int, help="第二个整数")
# 添加可选参数
parser.add_argument("-o", "--operation", choices=["add", "subtract", "multiply", "divide"], default="add", help="选择运算类型")
# 解析参数
args = parser.parse_args()
# 执行运算
if args.operation == "add":
result = args.num1 + args.num2
elif args.operation == "subtract":
result = args.num1 - args.num2
elif args.operation == "multiply":
result = args.num1 * args.num2
elif args.operation == "divide":
result = args.num1 / args.num2
print(f"结果: {result}")
if __name__ == "__main__":
main()
运行示例
保存上述脚本为 calculator.py
,然后在命令行中运行:
python calculator.py 10 5 -o add
输出:
结果: 15
python calculator.py 10 5 -o subtract
输出:
结果: 5
高级用法
示例:处理布尔值、列表和默认值
在这个示例中,我们将展示如何处理布尔值、列表和设置默认值。
import argparse
def main():
# 创建解析器
parser = argparse.ArgumentParser(description="高级命令行参数解析示例")
# 添加参数
parser.add_argument("--verbose", action="store_true", help="启用详细输出")
parser.add_argument("--numbers", type=int, nargs="+", help="输入一组整数")
parser.add_argument("--output", type=str, default="result.txt", help="输出文件(默认: result.txt)")
# 解析参数
args = parser.parse_args()
# 处理布尔值
if args.verbose:
print("详细输出已启用")
# 处理列表
if args.numbers:
print(f"输入的整数: {args.numbers}")
print(f"它们的和: {sum(args.numbers)}")
# 输出文件
print(f"结果将保存到: {args.output}")
if __name__ == "__main__":
main()
运行示例
保存上述脚本为 advanced_parser.py
,然后在命令行中运行:
python advanced_parser.py --verbose --numbers 1 2 3 4 5
输出:
详细输出已启用
输入的整数: [1, 2, 3, 4, 5]
它们的和: 15
结果将保存到: result.txt
python advanced_parser.py --numbers 10 20 30 --output output.txt
输出:
输入的整数: [10, 20, 30]
它们的和: 60
结果将保存到: output.txt
总结
通过 argparse
模块,Python 脚本可以灵活地解析命令行参数,支持位置参数、可选参数、布尔值、列表和默认值等多种功能。使用 argparse
可以显著提升脚本的可用性和用户体验。
License:
CC BY 4.0