创建cli应用程序的库

pikli的Python项目详细描述


pikli:用于制作cli应用程序的库

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<6c692e7376673f62716e63683d6d6173746572" /><<<<亚胺米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米7667" /><<<<<<<<<<<<

一个简单的python库来构建命令行接口。深受眼镜蛇的启发。

安装

啊!

开始

pikli是一个命令行解析器。它分析命令提示符上提供的参数,并决定其命令、标志或命令参数是否相应地起作用。命令可以有:标志、参数和子命令。在以下示例中:

啊!

我们有两个命令root&;code>serve。root顾名思义就是根命令。这个决定是通过提供父子关系来做出的。基本上是树状结构。而位于树顶部的命令是根。service命令由command类的add command方法生成根的子/子命令,add command方法将任意数量的命令作为子命令添加。然后执行命令。现在转到创建对象时提供的参数:
使用:确定命令的名称。必须的。
short命令的简短说明。
long命令的详细说明。
运行:调用命令的执行方法时触发的函数。关于run函数有一件事需要记住。要用作运行函数的函数(在本例中为启动服务器),必须有一个用作列表的参数。

标志

标志是与命令一起使用的额外选项。例如:git commit-m"initial commit"这里,git是根命令,commit是子命令,是标志&;后面的字符串是它的值。现在让我们看一个picli示例:

啊!

命令的标志方法返回标志对象,该对象处理该命令的每个与标志相关的活动。intp是该对象的一种方法,它创建一个整数标志。第一个参数是标志的名称(在长版本中使用),第二个参数是标志的可用名称,如-p。第三个参数是标志的默认值。bool标志没有默认值。默认为false。第四个应该很明显国旗的说明。现在,让我们使用到目前为止看到的一切:

python main.py serve -p 8080
< BR>

< BR>
python main.py serve --port=8080
< BR> 输出应为:
HTTP server running on port: 8080
< BR>

当调用pikli.get廑int("port")时,在不使用p标志的情况下执行SERVE命令将返回默认值,这是一个pikli核心函数,用于检索整数标志的值。类似地,还有get-str&;get-bool来获取字符串&;bool标志值。

帮助标志

pikli提供自动帮助标志生成和识别。每当执行不带run函数的命令时,将自动执行帮助标志。或者,可以像任何其他标志一样显式地提到它,如-h--help。尝试:

python main.py serve --help
< BR>

简单地运行python main.py将触发它的帮助标志,因为它没有run函数。帮助标志应该显示类似的内容:

hello is a cli app


Usage:
	hello [args] [flags] [sub commands]


Available Commands:
serve            starts the http server


Flags:
-h, --help                Shows info regarding the command

持久标志

pikli提供对持久标志的支持。持久标志与normal标志类似,除非您将其分配给命令它会自动分配给它在命令树底部拥有的每个子项。因此,如果给根命令指定了一个持久标志,那么每个命令都会得到这个标志。< < < > > >

importpiklidefstart_server(arg):ifpikli.get_bool("verbose"):print("showing details")print("HTTP server running on port: {}".format(pikli.get_int("port")))root=pikli.Command(use="hello",short="hello is a cli app")serve=pikli.Command(use="serve",short="starts the http server",run=start_server)serve.flags().intp("port","p",8000,"the port on which the server runs")root.add_command(serve)root.persistent_flags().boolp("verbose","v","shows details regarding the operation")root.execute()

这里,将verbose标志分配给根命令使此标志成为全局标志。分配持久标志时,不要忘记首先添加所有子命令。

参数

除了子命令之外,还可以在pikli中使用标志普通参数。所需的只是用作run函数参数的arg列表。让我们看一个例子:

pip install pikli
0 < BR>

只要保持参数的索引顺序就行了。参数的索引号并不关心标志。例如,python main.py-v"john doe"将忽略标志,并将参数作为索引0进行计数。输出应为:

pip install pikli
1

Env

最后,您可以使用pikli获取字符串或整数环境变量。这两个函数是get_str_env&;get_int_env

pip install pikli
2 < BR>

按如下方式运行:

pip install pikli
3

贡献

完全接受建议。请参阅贡献指南

许可证

pikli是根据麻省理工学院许可证获得许可的。

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

推荐PyPI第三方库


热门话题
java这算是人工智能吗?   java@OnDelete(级联)不处理双向映射(hibernate)   java我怎样才能在基元类型(int)上修复这个等式   java如何初始化PrintWriter数组?   arraylist如何使用java添加敌人   java如何处理2019年的背景地理围栏?   java是否有一个XPath表达式可用于在CDATA区域中导航XML?   Kotlin(Android Studio)中的java选项卡式活动   安卓 java。lang.IllegalArgumentException:provider=网络   广播控制流和主流的java排序   java Apache Nifi无法启动Nifi实例   java我正在尝试将内容作为字符串放入ListView   java阻止mozilla会话还原   java在春季选择引用哪个bean?