跳转到主要内容

argparse扩展集合

项目描述

动机

我在洗澡时想到了这个名字。

目前,这是一个收集我在最近一段时间内编写的并发现有用的argparse扩展。

功能

  • @arg_converter 装饰器,用于编写简单的参数值解析器,无需使用 argparse.Action 模板

  • @subcommand 装饰器,用于节省您使用 add_subparsersset_defaults(func=) 的时间。

  • @cli 装饰器,用于生成命令行界面。

示例

以下示例结合了所有功能,但工具不会强制要求您这样做。

如果您已有现有的 argparse.ArgumentParser 定义,您应该能够通过将初始化行更改为 parser = aarghparse.ArgumentParser(...) 来用aarghparse替换它。

import datetime as dt

import dateutil.tz

from aarghparse import ArgumentParser, arg_converter, cli


@cli
def calendar_cli(parser: ArgumentParser, subcommand: ArgumentParser.subcommand):
    """
    Command-line calendar.
    """

    parser.add_argument(
        '--date-format',
        default=None,
    )

    @arg_converter
    def tz_arg(value):
        return dateutil.tz.gettz(value)

    @subcommand(
        name="now",
        args=[
            ["--tz", {
                "action": tz_arg,
                "help": "Timezone",
            }],
        ],
    )
    def now_cmd(args):
        """
        Prints today's date.
        """
        date_format = args.date_format or "%Y-%m-%d %H:%M:%S"
        print(dt.datetime.now(tz=args.tz).strftime(date_format))


if __name__ == "__main__":
    calendar_cli.run()

如果您安装了 python-dateutil,则可以尝试以下操作

python -m aarghparse.examples.calendar --help
python -m aarghparse.examples.calendar now --help
python -m aarghparse.examples.calendar now --tz "Europe/Riga"
python -m aarghparse.examples.calendar --date-format "%d.%m.%Y." now --tz "Europe/Riga"

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

aarghparse-0.2.0.tar.gz (4.7 kB 查看哈希值)

上传时间 源代码

构建分发

aarghparse-0.2.0-py3-none-any.whl (5.6 kB 查看哈希值)

上传时间 Python 3

由以下支持