Python笔记之使用argparse模块命令行传参
code review!
文章目录
1.argparse 模块简介
argparse
是 Python 标准库中一个用于解析命令行参数的模块。通过使用 argparse
,你可以轻松地为脚本添加位置参数(positional arguments)、可选参数(optional arguments)、默认值等,并自动生成帮助和使用手册。
- 位置参数(Positional Arguments):这些参数是必须提供的,调用命令时的位置固定。
- 选项(Optional Arguments):通常以
-
或--
开头,不是必须的,有默认值或可省略。 - 长选项(Long Options):以
--
开头,后跟一个较长的名称(如--help
)。 - 短选项(Short Options):以单个
-
开头,后跟一个字母或数字(如-h
)。
- 创建
ArgumentParser
对象。 - 使用
add_argument()
方法添加参数。 - 使用
parse_args()
方法解析命令行参数。
2.示例代码1
下面的示例展示了如何使用 argparse
来解析长选项和短选项:
import argparse
def main():
# 创建 ArgumentParser 对象
parser = argparse.ArgumentParser(description="示例程序")
# 添加位置参数
parser.add_argument("input", help="输入文件")
# 添加长选项和短选项
parser.add_argument("-o", "--output", help="输出文件", default="output.txt")
# 添加只有长选项的参数
parser.add_argument("--verbose", help="增加输出详细程度", action="store_true")
# 解析命令行参数
args = parser.parse_args()
# 使用参数
print("输入文件:", args.input)
print("输出文件:", args.output)
if args.verbose:
print("详细模式已启用")
if __name__ == "__main__":
main()
命令行使用示例
假设上面的脚本保存为 example.py
,下面是如何在命令行中使用它的几个示例:
-
只提供位置参数:
python example.py data.txt
输出:
输入文件: data.txt 输出文件: output.txt
-
提供位置参数和长选项:
python example.py data.txt --output=result.txt
输出:
输入文件: data.txt 输出文件: result.txt
-
启用详细模式:
python example.py data.txt --verbose
输出:
输入文件: data.txt 输出文件: output.txt 详细模式已启用
3.示例代码2:长选项(long options)和短选项(short options)
当使用 argparse
模块创建命令行界面时,你可以定义长选项(long options)和短选项(short options)。这些选项允许用户以不同的方式输入相同的命令行参数,通常长选项更易于理解,而短选项则更加简洁。
import argparse
def main():
# 创建 ArgumentParser 对象
parser = argparse.ArgumentParser(description="处理输入和输出文件的示例")
# 添加长选项和短选项
parser.add_argument("-i", "--input", help="指定输入文件的路径", required=True)
parser.add_argument("-o", "--output", help="指定输出文件的路径", default="default_output.txt")
# 解析命令行参数
args = parser.parse_args()
# 输出处理结果
print(f"输入文件: {args.input}")
print(f"输出文件: {args.output}")
if __name__ == "__main__":
main()
在命令行中的使用
假设上述代码保存在 file_processor.py
文件中。
使用长选项
长选项通常以 --
开头,后跟一个描述性较好的名字,这样使得命令行参数的作用更加清晰。
python file_processor.py --input example.txt --output result.txt
输出将是:
输入文件: example.txt
输出文件: result.txt
使用短选项
短选项以单个 -
开头,后跟一个字母或数字,适合经常使用的命令或者那些希望快速输入的场景。
python file_processor.py -i example.txt -o result.txt
输出与使用长选项相同:
输入文件: example.txt
输出文件: result.txt
总结
长选项和短选项在 argparse
中可以同时定义,它们指向相同的参数。用户可以根据自己的喜好选择使用长选项还是短选项。长选项适合在脚本或程序中使用,因为它们使得代码更易于理解。短选项则适合交互式使用,因为它们输入更快。在设计命令行工具时,提供两种选项形式是一种良好的实践。
4.示例:创建一个简单的命令行工具
假设我们要创建一个命令行工具来处理一些简单的数学运算,例如加法和乘法。
1. 导入模块
首先,我们需要导入 argparse
模块:
import argparse
2. 创建 Parser 对象
创建一个 ArgumentParser
对象,可以提供一个关于程序的描述信息,这将在帮助信息中显示。
parser = argparse.ArgumentParser(description="一个简单的数学运算命令行工具")
3. 添加参数
我们将添加两个位置参数和一个选项参数:
# 添加位置参数
parser.add_argument('x', type=int, help="第一个数")
parser.add_argument('y', type=int, help="第二个数")
# 添加选项参数
parser.add_argument('--operation', type=str, default='add', choices=['add', 'multiply'], help="运算类型(加法或乘法)")
4. 解析参数
解析命令行参数,并将解析后的参数存储到一个变量中。
args = parser.parse_args()
5. 实现功能逻辑
根据用户输入的参数执行计算:
if args.operation == 'add':
result = args.x + args.y
elif args.operation == 'multiply':
result = args.x * args.y
print(f"结果是: {result}")
完整代码
将上述代码片段组合成一个完整的 Python 脚本:
import argparse
# 创建解析器
parser = argparse.ArgumentParser(description="一个简单的数学运算命令行工具")
# 添加参数
parser.add_argument('x', type=int, help="第一个数")
parser.add_argument('y', type=int, help="第二个数")
parser.add_argument('--operation', type=str, default='add', choices=['add', 'multiply'], help="运算类型(加法或乘法)")
# 解析参数
args = parser.parse_args()
# 根据参数执行运算
if args.operation == 'add':
result = args.x + args.y
elif args.operation == 'multiply':
result = args.x * args.y
print(f"结果是: {result}")
使用示例
用户可以通过命令行使用此脚本,例如:
python math_tool.py 5 3 --operation add
输出将是:
结果是: 8
或者:
python math_tool.py 5 3 --operation multiply
输出将是:
结果是: 15