第十四章:应用构建模块-argparse:命令行选项和参数解析-简单示例-参数来源

14.1.4.3 参数来源
在目前为止的例子中,提供给解析器的参数列表要么是显式传入的一个列表,要么隐式地从sys.argv取参数。有一些类命令行指令并非来自命令行(如配置文件中的指令),使用argparse处理这种命令时,显式地传入列表会很有用。

import argparse
from configparser import ConfigParser
import shlex

parser = argparse.ArgumentParser(description='Short sample app')

parser.add_argument('-a',action="store_true",default=False)
parser.add_argument('-b',action="store",dest="b")
parser.add_argument('-c',action="store",dest="c",type=int)

config = ConfigParser()
config.read('argparse_with_shlex.ini')
config_value = config.get('cli','options')
print('Config :',config_value)

argument_list = shlex.split(config_value)
print('Arg List:',argument_list)

print('Results :',parser.parse_args(argument_list))

这个例子使用configparse读取一个配置文件。
[cli]
options = -a -b 2

利用shlex可以很容易地分解存储在配置文件中的字符串。
在这里插入图片描述
在应用代码中处理配置文件还有一种做法,可以使用fromfile_prefix_chars告诉argparse如何识别一个指定输入文件的参数(这个文件中包含一组要处理的参数)。

import argparse
import shlex

parser = argparse.ArgumentParser(description='Short sample app',
                                 fromfile_prefix_chars='@',
                                 )

parser.add_argument('-a',action="store_true",default=False)
parser.add_argument('-b',action="store",dest="b")
parser.add_argument('-c',action="store",dest="c",type=int)

print(parser.parse_args(['@argparse_fromfile_prefix_chars.txt']))

这个例子在发现一个有@前缀的参数时会停止,然后读取指定的文件来查找更多参数。

处理argparse_from_prefix_chars.txt文件时生成的输出如下。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值