面向人类的python cli脚本
captain的Python项目详细描述
简单的python cli脚本,适合那些只想完成任务的人。
用法
一个有效的captaincli脚本只需要两件事:
一个main函数
defmain(foo,bar):return0
importcaptaindefmain(foo,bar):return0captain.exit(__name__)
就这样!在main函数中定义的任何参数都将 是命令行上的选项。上尉的剧本和其他剧本一样 其他python命令行脚本,因此要运行上面的示例,可以 做:
$ python path/to/script.py --foo=1 --bar=2
参数装饰符
captain.decorators.arg()decorator提供了一个很好的passthrough 全部API argparse模块if 您需要真正自定义参数如何传递到脚本中:
fromcaptainimportexitfromcaptainimportechofromcaptain.decoratorsimportarg@arg('--foo','-f')@arg('arg',metavar='ARG')defmain(*args,**kwargs):'''this is the help description'''echo.out(args)echo.out(kwargs)exit(__name__)
会打印这样的帮助字符串:
usage: script.py [-h] [--foo FOO] ARG this is the help description positional arguments: ARG optional arguments: -h, --help show this help message and exit --foo FOO, -f FOO
如果你想用另一种漂亮的方式来定义参数,可以看看 docopt。
回声
这个小模块使您可以在 在以下情况下仍然可以通过配置记录器来完全控制 你必须这么做。它还将遵守全局--quiet标志。
fromcaptainimportechovar1="print"var2="stdout"echo.out("this will {} to {}",var1,var2)var2="stderr"echo.err("this will {} to {}",var1,var2)e=ValueError("this will print with stacktrace and everything")echo.exception(e)
echo模块有很多不错的小助手特性,但是船长 也可以使用模块,如 clint如果你需要做更多 高级cli输出。
示例
典型的标准python cli脚本
importargparseif__name__==u'__main__':parser=argparse.ArgumentParser(description='fancy script description')parser.add_argument("--foo",action='store_true')parser.add_argument("--bar",default=0,type=int)parser.add_argument("args",nargs='*')args=parser.parse_args()
会变成:
importcaptaindefmain(foo=False,bar=0,*args):'''fancy script description'''return0captain.exit(__name__)
子命令
captain支持脚本中定义的多个子命令,使用 格式化main_subcommand。
# cli.pyimportcaptaindefmain_foo():passdefmain_bar():passcaptain.exit(__name__)
因此foo可以使用以下方法调用:
$ python cli.py foo
并且bar可以使用以下方法调用:
$ python cli.py bar
在另一个包中嵌入队长
如果希望包中的脚本可以同时使用 python -m example可能还有一个console_scripts入口点,您 可以设置包的__main__.py模块,如下所示:
# example/__main__.pyfromcaptainimportexitdefmain():pass# hook for setup.py entry_pointsdefconsole():exit(__name__)# hook for python -m MODULE callif__name__=="__main__":console()
然后在setup.py脚本中添加:
entry_points={'console_scripts':['example = example.__main__:console'],}
就这些了。
目录中所有船长脚本的简单列表
您可以通过运行 没有争论的船长:
$ captain
安装
使用pip:
$ pip install captain
最新和最棒的:
$ pip install --upgrade "git+https://github.com/Jaymon/captain#egg=captain"