Python的argparse
库是用于解析命令行参数的标准库,同时配合configparser
模块使用可以实现命令行参数与配置文件参数共存。
命令行参数
使用argparse
库解析命令行参数,主要包括以下步骤:
- 定义脚本的参数列表;
- 实例化
ArgumentParser
对象; - 添加参数的名称、选项、值等信息;
- 调用
parse_args()
方法解析参数列表。
下面是一个简单的示例代码说明:
import argparse
if __name__ == '__main__':
# 定义参数列表
parser = argparse.ArgumentParser(description='命令行参数示例')
parser.add_argument('--name', '-n', type=str, required=True, help='姓名')
parser.add_argument('--age', '-a', type=int, required=True, help='年龄')
args = parser.parse_args()
# 访问参数
print('姓名: %s' % args.name)
print('年龄: %d' % args.age)
在上面的代码中,我们定义了2个需要输入的命令行参数:--name
和--age
。其中,type
参数指定了参数的数据类型,required
参数指定该参数是否必填,help
参数指定参数的说明。最后,我们调用parse_args()
方法解析参数列表并输出结果。
执行该脚本,示例如下:
$ python example.py -n Jonh -a 25
姓名: Jonh
年龄: 25
配置文件参数
configparser
模块可以用于解析配置文件,我们通常可以在某个指定的配置文件中定义参数信息,然后在脚本中读取这些配置信息。
下面是一个示例代码说明:
import configparser
if __name__ == '__main__':
# 实例化configparser对象
config = configparser.ConfigParser()
# 读取配置文件example.ini
config.read('example.ini')
# 获取参数
name = config['PERSON']['name']
age = config.getint('PERSON', 'age')
# 访问参数
print('姓名: %s' % name)
print('年龄: %d' % age)
在上面示例中,我们首先实例化了一个ConfigParser
对象,然后读取了配置文件example.ini
。接着使用get()
方法或者[]
操作符访问PERSON
分区中的参数name
和age
,并输出结果。
配置文件example.ini
内容如下:
[PERSON]
name = John
age = 25
执行脚本,输出结果如下:
$ python example.py
姓名: John
年龄: 25
命令行参数和配置文件参数共存
实际应用中,我们可以将命令行参数和配置文件参数结合使用,即如果用户传入了命令行参数,则以命令行参数为主;否则使用配置文件中的参数。下面是一个示例:
import argparse
import configparser
if __name__ == '__main__':
# 定义命令行参数
parser = argparse.ArgumentParser(description='命令行参数和配置参数示例')
parser.add_argument('--name', '-n', type=str, help='姓名')
parser.add_argument('--age', '-a', type=int, help='年龄')
# 解析命令行参数
args = parser.parse_args()
# 实例化configparser对象,读取配置文件example.ini
config = configparser.ConfigParser()
config.read('example.ini')
# 获取参数,以命令行参数为优先
name = args.name if args.name else config['PERSON']['name']
age = args.age if args.age else config.getint('PERSON', 'age')
# 访问参数
print('姓名: %s' % name)
print('年龄: %d' % age)
在上面的示例中,我们首先定义了命令行参数--name
和--age
。然后解析命令行参数,并读取配置文件example.ini
中的参数。最后,我们使用条件表达式将命令行参数和配置文件参数做一个比较,如果命令行参数存在,则以命令行参数为优先,否则使用配置文件中的参数。
执行脚本,输出结果如下:
$ python example.py --age 30
姓名: John
年龄: 30
$ python example.py -n Alice
姓名: Alice
年龄: 25
$ python example.py -n Alice --age 30
姓名: Alice
年龄: 30
这里我们演示了3种不同的执行方式,其中第1种和第2种使用了命令行参数和配置文件参数的组合,第3种则只使用了命令行参数。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python argparse命令参数与config配置参数示例深入详解 - Python技术站