标题:Python实现解析命令行参数的常见方法总结
引言:
命令行参数是指在控制台或者终端中输入的参数,对于很多脚本程序及应用程序,都需要支持特定的命令行参数。Python提供了许多解析命令行参数的库,本文将会介绍两种常见的方法:argparse和getopt。
正文:
一、argparse解析命令行参数
1. argparse库的安装
pip install argparse
2. argparse库的使用
argparse库通过在程序中定义所需的参数,自动生成帮助文档,并且能够验证用户提供的参数是否正确。示例代码如下:
import argparse
#定义参数
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)')
#解析参数
args = parser.parse_args()
print(args.accumulate(args.integers))
参数说明:
1. 首先我们通过argparse.ArgumentParser()创建一个ArgumentParser对象,用于处理命令行参数。
2. 我们在 ArgumentParser() 中定义了2个参数:一个位置参数integers和一个可选参数--sum。
3. 位置参数integers的metavar参数指定了该参数在参数列表中的名字。
4. 非必选参数--sum默认调用max函数,并且在--sum出现时调用sum函数。
5. 最后我们使用parser.parse_args()解析参数,并且返回一个命名空间对象,我们可以通过查询这个对象的属性来获取用户传入的参数。
3. argparse库的示例
示例1:计算指定数字列表的最大值
import argparse
#定义参数
parser = argparse.ArgumentParser(description='Calculate max number in a list')
parser.add_argument('numbers', metavar='N', type=int, nargs='+',
help='an integer list to find max')
#解析参数
args = parser.parse_args()
#计算最大值
max_number = max(args.numbers)
print('The max number is:', max_number)
用户通过控制台输入要查找的整数列表,然后运行脚本,脚本会返回该列表的最大值。
示例2:计算指定数字列表的平均值
import argparse
#定义参数
parser = argparse.ArgumentParser(description='Calculate average number in a list')
parser.add_argument('numbers', metavar='N', type=int, nargs='+',
help='an integer list to find average')
#解析参数
args = parser.parse_args()
#计算平均值
avg_number = sum(args.numbers) / len(args.numbers)
print('The average number is:', avg_number)
用户通过控制台输入要查找的整数列表,然后运行脚本,脚本会返回该列表的平均值。
二、getopt解析命令行参数
1. getopt库的安装
getopt是Python的标准库,不需要额外安装。
2. getopt库的使用
getopt主要通过getopt()和getopt_long()函数进行命令行参数解析。示例代码如下:
import getopt
import sys
# 定义参数
opts, args = getopt.getopt(sys.argv[1:], 'hi:o:', ['help', 'input=', 'output='])
input_file = ''
output_file = ''
# 解析参数
for opt, arg in opts:
if opt == '-h':
print('help, use -i <input> -o <output>')
sys.exit()
elif opt in ('-i', '--input'):
input_file = arg
elif opt in ('-o', '--output'):
output_file = arg
print('Input:', input_file)
print('Output:', output_file)
参数说明:
1. 我们通过getopt.getopt()函数获取了输入的参数和值。
2. -h为非必选参数,-i和-o为必选参数,同时可以使用--help, --input和--output替代。
3. 最后通过解析opts集合中的对应参数,获取用户输入的参数值。
3. getopt库的示例
示例1:计算指定数字列表的最大值
import getopt
import sys
# 定义参数
opts, args = getopt.getopt(sys.argv[1:], 'hn:', ['help', 'numbers='])
numbers = ''
# 解析参数
for opt, arg in opts:
if opt in ('-h', '--help'):
print('help, use -n <numbers>')
sys.exit()
elif opt in ('-n', '--numbers'):
numbers = arg
#将数字字符串转为列表
numbers = numbers.split(',')
numbers = [int(number) for number in numbers]
#计算最大值
max_number = max(numbers)
print('The max number is:', max_number)
用户通过控制台输入要查找的整数列表,然后运行脚本,脚本会返回该列表的最大值。
示例2:计算指定数字列表的平均值
import getopt
import sys
# 定义参数
opts, args = getopt.getopt(sys.argv[1:], 'hn:', ['help', 'numbers='])
numbers = ''
# 解析参数
for opt, arg in opts:
if opt in ('-h', '--help'):
print('help, use -n <numbers>')
sys.exit()
elif opt in ('-n', '--numbers'):
numbers = arg
#将数字字符串转为列表
numbers = numbers.split(',')
numbers = [int(number) for number in numbers]
#计算平均值
avg_number = sum(numbers) / len(numbers)
print('The average number is:', avg_number)
用户通过控制台输入要查找的整数列表,然后运行脚本,脚本会返回该列表的平均值。
结论:
Python提供了多种解析命令行参数的库,其中argparse和getopt是比较常用的两种库。argparse库功能强大,能够自动生成帮助文档并且能够验证用户传入的参数是否正确;而getopt则在Python标准库中,使用方便,只需要通过getopt.getopt()和getopt.getopt_long()进行操作。在实际应用中,我们需要根据具体需求来选择使用哪种方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现解析命令行参数的常见方法总结 - Python技术站