下面是针对Python命令行解析工具argparse模块的完整攻略。
什么是argparse模块
argparse是Python标准库中用于命令行解析的模块,它可以帮助我们定义和解析命令行参数,并提供了丰富的功能和选项。
argparse模块的基本用法
- 引入argparse模块
python
import argparse
- 创建ArgumentParser对象
python
parser = argparse.ArgumentParser()
- 添加参数
python
parser.add_argument('参数名称', type=参数类型, help='参数帮助信息')
- 解析参数
python
args = parser.parse_args()
- 使用参数
python
print(args.参数名称)
argparse模块的进阶用法
1. 添加多个参数
argparse模块提供了add_argument()
方法和add_argument_group()
方法来添加多个参数,可以分组添加,并指定参数的类型、默认值、描述等属性。示例代码如下:
parser = argparse.ArgumentParser()
# 添加一个位置参数
parser.add_argument('file', type=str, help='文件名')
# 添加一个可选参数
parser.add_argument('-o', '--output', type=str, default='output.txt', help='输出文件名')
# 添加一个分组
group = parser.add_argument_group('模式')
group.add_argument('-r', '--read', action='store_true', help='读取模式')
group.add_argument('-w', '--write', action='store_true', help='写入模式')
args = parser.parse_args()
解析参数和使用参数的方法同基本用法。
2. 参数可选值的限制
如果需要限制一个参数的值只能是一些固定的值,可以使用choices
参数。示例代码如下:
parser = argparse.ArgumentParser()
parser.add_argument('color', choices=['red', 'green', 'blue'], help='颜色')
args = parser.parse_args()
这样使用python test.py red
可以正常解析参数,而使用python test.py yellow
则会提示错误:
usage: test.py [-h] {red,green,blue} ...
test.py: error: argument color: invalid choice: 'yellow' (choose from 'red', 'green', 'blue')
3. 参数互斥
有的时候命令行参数会存在互斥的情况,即不能同时出现。argparse模块提供了add_mutually_exclusive_group()
方法来实现参数互斥。示例代码如下:
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()
group.add_argument('-r', '--read', action='store_true', help='读取模式')
group.add_argument('-w', '--write', action='store_true', help='写入模式')
args = parser.parse_args()
这样在解析参数时,-r
和-w
参数不能同时使用。
示例说明
示例1:实现计算器
实现一个简单的命令行计算器,接受两个数字和一个操作符作为参数,并输出结果。示例代码如下:
import argparse
parser = argparse.ArgumentParser(description='简单计算器')
parser.add_argument('num1', type=float, help='第一个数字')
parser.add_argument('num2', type=float, help='第二个数字')
parser.add_argument('--op', type=str, default='+', choices=['+', '-', '*', '/'], help='操作符')
args = parser.parse_args()
if args.op == '+':
result = args.num1 + args.num2
elif args.op == '-':
result = args.num1 - args.num2
elif args.op == '*':
result = args.num1 * args.num2
else:
result = args.num1 / args.num2
print(result)
使用python calculator.py 2 3 -o +
可以计算出2+3=5的结果。
示例2:实现文件的读写操作
实现一个简单的命令行工具,接受一个文件名作为参数,可以读取文件或向文件中写入内容。示例代码如下:
import argparse
parser = argparse.ArgumentParser(description='文件读写')
parser.add_argument('file', type=str, help='文件名')
group = parser.add_mutually_exclusive_group()
group.add_argument('-r', '--read', action='store_true', help='读取文件')
group.add_argument('-w', '--write', type=str, help='写入文件')
args = parser.parse_args()
if args.read:
with open(args.file, 'r') as f:
print(f.read())
elif args.write:
with open(args.file, 'w') as f:
f.write(args.write)
使用python file.py test.txt -r
可以读取test.txt文件的内容,使用python file.py test.txt -w "hello world"
可以向test.txt文件写入"hello world"字符串。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python命令行解析工具argparse模块 - Python技术站