Python命令行参数解析-argparse
作者:YXN-python 阅读量:7 发布日期:2025-06-04
argparse 是 Python 标准库中用于解析命令行参数的模块,它取代了早期的 optparse 模块,提供了更强大、更灵活的命令行参数处理功能。
基本用法
import argparse
# 1. 创建解析器对象
parser = argparse.ArgumentParser(description='程序描述')
# 2. 添加参数
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
# 3. 解析参数
args = parser.parse_args()
# 4. 使用参数
print(args.accumulate(args.integers))
主要功能
# 1. 位置参数
parser.add_argument('filename', help='input file')
# 2. 可选参数
parser.add_argument('-f', '--filename', help='input file')
# 3. 参数类型
parser.add_argument('-n', type=int, help='a number')
# 4. 参数动作 (Action)
"""
store - 存储参数值 (默认)
store_const - 存储常量值
store_true/store_false - 存储布尔值
append - 将值追加到列表
count - 统计参数出现次数
help - 显示帮助信息
"""
parser.add_argument('--verbose', action='store_true', help='verbose output')
# 5. 参数数量 (nargs)
"""
? - 0或1个参数
* - 0或多个参数
+ - 1或多个参数
数字 - 确切数量的参数
"""
parser.add_argument('files', nargs='+', help='list of files')
# 6. 默认值和必需参数
parser.add_argument('--output', default='output.txt', required=True)
# 7. 参数组
group = parser.add_mutually_exclusive_group()
group.add_argument('--verbose', action='store_true')
group.add_argument('--quiet', action='store_true')
高级用法
子命令
subparsers = parser.add_subparsers(dest='command')
# 创建子命令 'train'
parser_train = subparsers.add_parser('train', help='train a model')
parser_train.add_argument('--lr', type=float, default=0.01)
# 创建子命令 'test'
parser_test = subparsers.add_parser('test', help='test a model')
parser_test.add_argument('--batch-size', type=int, default=32)
自定义类型
def percentage(x):
x = float(x)
if not 0 <= x <= 100:
raise argparse.ArgumentTypeError('Value must be between 0 and 100')
return x
parser.add_argument('--discount', type=percentage)
自定义帮助信息
parser = argparse.ArgumentParser(
description='程序描述',
epilog='示例: python script.py -i input.txt -o output.txt',
formatter_class=argparse.ArgumentDefaultsHelpFormatter
)
实际示例
import argparse
def main():
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
parser.add_argument('--verbose', action='store_true',
help='print processing details')
args = parser.parse_args()
if args.verbose:
print("Processing numbers:", args.integers)
result = args.accumulate(args.integers)
print("Result:", result)
if __name__ == '__main__':
main()
YXN-python
2025-06-04