argparse扩展的集合
aarghparse的Python项目详细描述
功能
- @arg_converterdecorator编写不带argparse.Action样板的简单参数值分析器
- @subcommanddecorator将您从所有的add_subparsers和set_defaults(func=)中拯救出来。
- @clidecorator以生成命令行接口。
示例
下面的例子结合了所有的特性,但是这个工具并没有把它强加给你。
如果你有一个现存的^ {TT7} $定义,你应该能够用^ {TT8}$替换它 只需将初始化行更改为parser = aarghparse.ArgumentParser(...)。
importdatetimeasdtimportdateutil.tzfromaarghparseimportArgumentParser,arg_converter,cli@clidefcalendar_cli(parser:ArgumentParser,subcommand:ArgumentParser.subcommand):""" Command-line calendar. """parser.add_argument('--date-format',default=None,)@arg_converterdeftz_arg(value):returndateutil.tz.gettz(value)@subcommand(name="now",args=[["--tz",{"action":tz_arg,"help":"Timezone",}],],)defnow_cmd(args):""" Prints today's date. """date_format=args.date_formator"%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"