argparse包最简单用法的改进

simple-cli-args的Python项目详细描述


简单的cli参数

一个python主方法装饰器。
argparse包进行了增强,以实现其最简单的用法。 需要python 3.6或更高版本。

普通参数变为位置参数,具有默认值的参数变为cli的命名参数, 有缩写的可能性,正如argparse提供的那样。
帮助选项(-h--help)是自动生成的,其文本取自docstring。

安装

使用pip
pip install simple_cli_args

或者,使用预期的python命令代替python3

python3 -m pip install simple_cli_args

使用设置工具

只需在克隆的git存储库的主目录中发布:

./setup.py install

使用量

假设my_cli.py的内容是:

#!/usr/bin/env python3
from simple_cli_args import cli_args

@cli_args
def main(apple, banana, cucumber='green'):
    print("Our fruits are:", apple, banana, cucumber)

if __name__ == '__main__':
    main()  # without arguments given, those will be read from the CLI

然后,我们得到以下打印输出:

$ ./my_cli.py red yellow
Our fruits are: red yellow green

$ ./my_cli.py red yellow --cucumber=purple
Our fruits are: red yellow purple

$ ./my_cli.py red yellow -c nice
Our fruits are: red yellow nice

$ ./my_cli.py red
usage: my_cli.py [-h] [--cucumber | -c  CUCUMBER] apple banana
my_cli.py: error: the following arguments are required: banana

$ ./my_cli.py --help
usage: my_cli.py [-h] [--cucumber | -c  CUCUMBER] apple banana

positional arguments:
  apple
  banana

optional arguments:
  -h, --help            show this help message and exit
  --cucumber | -c  CUCUMBER
                        default: green

装饰主类

如果主功能内置到类中,则decorator可以用于其构造函数__init__方法,也可以用于类本身,如下面的示例所示。

#!/usr/bin/env python3
from simple_cli_args import cli_args

@cli_args
class Main:
    def __init__(self, apple, banana, cucumber='green'):
        self.fruits = apple, banana, cucumber
    def show(self):
        print("Our fruits are:", *self.fruits)

if __name__ == '__main__':
    main = Main()  # without arguments given, those will be read from the CLI
    main.show()

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

推荐PyPI第三方库


热门话题
来自查询JPA的java更新   java堆排序堆方法不工作?   java程序执行步骤   针对Mac的eclipse Java网络安全服务(Mozilla JSS)未满足LinkError   java使用if语句和JDBC条件更新数据库   数据结构Java编程问题,逻辑问题   java如何缩放Android桌面布局   java线程中断不会被InterruptedException捕获   设置超时以在java实现类中使用web服务   java中的C++ OpenCV PTR   java编译器不取消lambda参数int的装箱   jna调用方法的JAVA方法   在Android Edittext中将数字设置为下标时,java在PostTextChanged中获取ANR   java创建死信队列   java是否可以自定义JTree节点?   java如何仅在运行junit时从项目类路径中删除依赖项?   java如何从google活动中获取配置文件名并在其他活动布局中显示   ActionBar中的java NullPointerException。设置HomeButtonEnabled