内置argparse的包装器,允许用户通过交互式提示填写缺少的命令行参数

argparse-prompt的Python项目详细描述


argparseprompt

argparseprompt是内置argparse的包装器,允许 用户通过交互式提示

安装

可以使用pip安装argparseprompt:

pip install argparse_prompt

用法

基本用法

这个模块的唯一公共接口是PromptParser类,它是python的 ArgumentParser。使用这个类的方式与使用 使用ArgumentParser,除非任何参数没有指定的default值,并且没有提供值 对于命令行中的参数,PromptParser将使用input()提示为此参数输入一个值,该值为 来自Stdin。

考虑下面的代码(取自单元测试之一):

fromargparse_promptimportPromptParserparser=PromptParser()parser.add_argument('--argument','-a',help='An argument you could provide',default='foo')print(parser.parse_args().argument)

如果使用argument的值运行此脚本,解析将正常运行:

$ python test/default_parser.py --argument 12
12

但是,如果没有为arg指定值,解析器将提示您输入一个值

$ python test/default_parser.py
argument: An argument you could provide
> (foo) car
car

默认值

由于此参数有默认值,您也可以按回车键,此值将自动使用:

python test/default_parser.py
argument: An argument you could provide
> (foo) 
foo

类型检查

您还可以用常规方式为参数指定类型:

fromargparse_promptimportPromptParserparser=PromptParser()parser.add_argument('--argument','-a',help='An argument you could provide',type=int)print(parser.parse_args().argument)

如果这样做,则此类型检查将用于您在提示下输入的值:

$ python test/typed_parser.py  
argument: An argument you could provide
abc
Argument "argument" was given a value not of type <class 'int'>

安全值

对于需要安全的参数,如密码、密钥等,可以在定义 争论。这将导致用户为该字段输入的任何内容对终端隐藏,就像 git,或ssh隐藏密码输入。

例如:

parser.add_argument('--password','-p',help='A very secret password',secure=True)

情景禁用提示

如果将prompt参数用于add_argument,解析将被禁用:

parser.add_argument('--argument','-a',help='An argument you could provide',default='foo',prompt=False)

另外,如果要禁用所有提示(例如,对于自动脚本),只需将ARGPARSE_PROMPT_AUTO设置为 真实值:

ARGPARSE_PROMPT_AUTO=1 python test/default_parser.py

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java打印报告使Apache无响应   java如何在Gson中设置字段名(如果它是值)?   java从不同类的数组中获取元素   playframework迁移到2.4后在playframework中运行测试时出错。x(Java)   java Play框架1。使用@AllowFeature控制器方法进行x功能测试   java远离子对象:从继承中删除受保护的字段   将空函数作为参数传递给java函数   java IntelliJ IDEA找不到生成的配置元数据文件   java如果页面在过去24小时内没有更新,我无法通过Google Sites API获取页面条目   CheckedChangeListener上的java切换按钮,将首选项始终保存为空   可比Java:使用CollatorKey对集合进行排序   java如何在html中单击链接时传递一定数量的数据?   arraylist列表<MyModel>。包含(MyModel)java不工作   java使用一种方法将组件添加到数组中,如何实现?   java Android RecyclerView First and Last Item click在双击首次加载后生效   java如何获取mongodb数据库名,其中connect client在4中定义。x驱动程序   java Spring数据jpa,jpa替换DTO对象的字符串的正向返回列表   java找不到明确的意图,安卓   如何检查Java类中的每个变量是否都包含Null?