向命令行公开您的api。

commandline的Python项目详细描述


命令行界面帮助程序

这是一个帮助模块,用于制作直观的命令行程序 零努力。它需要一个函数签名,如:

example_function(string1, string2='something', string3='something else')

并将其转换为一个简单的命令行应用程序,用法如下:

example_program string1 [string2 [string3]]

你所要做的就是:

if __name__ == "__main__":
   import commandline
   commandline.run_as_main(example_function)

限制

请注意,它当前无法打印参数以外的帮助信息 它们的默认值,但如果是 任何用途。

参数的帮助可能会附带python3000的函数注释。 http://www.python.org/dev/peps/pep-3107/

参数类型是从默认参数推断出来的。 当前支持的是:int、float、bool、str、commandline.choice

如果没有默认参数,则无法推断类型,因此假设str.

>>> import commandline
>>> commandline.TESTMODE=1
>>> def test1(arg1=1, arg2=2, arg3=3):
...     print [arg1, arg2, arg3]
...
>>> commandline.run_as_main(test1, [])
[1, 2, 3]
>>> commandline.run_as_main(test1, ['6'])
[6, 2, 3]
>>> commandline.run_as_main(test1, ['--arg1=6', '--arg2=7', '--arg3=8'])
[6, 7, 8]
>>> commandline.run_as_main(test1, ['6', '7', '8'])
[6, 7, 8]
>>> commandline.run_as_main(test1, ['6', '7', '8', '9'], 'test.py')
Usage: test.py [arg1 [arg2 [arg3]]] [Options]
<BLANKLINE>
(Please put options last, and no more args than shown.)
Unexpected argument(s): 9
>>> commandline.run_as_main(test1, ['--arg1=6', '7', '8'], 'test.py')
Usage: test.py [arg1 [arg2 [arg3]]] [Options]
<BLANKLINE>
(Please put options last, and no more args than shown.)
Unexpected argument(s): 7, 8
>>> def test2(arg1=1, arg2=2, arg3=3):
...     return [arg1, arg2, arg3]
...
>>> commandline.run_as_main(test2, ['6', '7', '8'])
[6, 7, 8]
>>> def nodefault(arg1, arg2, arg3):
...     return [arg1, arg2, arg3]
>>> # If we have no default arguments, we assume you want strings:
>>> commandline.run_as_main(nodefault, ['6', '7', '8'])
['6', '7', '8']
>>> commandline.run_as_main(nodefault, [], 'test.py')
Usage: test.py arg1 arg2 arg3 [Options]
<BLANKLINE>
The following compulsory arguments are missing: arg1, arg2, arg3

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

推荐PyPI第三方库


热门话题
java将字符串拆分为带关键字的部分   删除数据库后未指定java数据源问题“url”属性   网络化java多人游戏连接   Java当新字符串等于旧字符串时,为什么substring()不创建新对象?   一个实例到多个bean的java注入   JavaSpringMVC验证错误消息   java总结if语句,并从另一个对象(如字符串[])读取if条件(动态if)   需要多个输入的Java IF语句   jsf如何选择正确的bean范围?   java将数据库值加载到组合框JSP,Hibernate   一次活动中的java 3布局   团队和球员反对Java的困难   java ActionListener如何知道按下了哪个按钮?