在python中使用命令行的最简单方法。命令行对象映射器。用于生成POSIX命令行参数、命令和参数的库。对结构任务非常有用。

clom的Python项目详细描述


clom是一个python命令行对象映射器。它旨在生成生成命令和转义参数 便于命令行交互。当与Fabricsubprocess一起使用时,它特别有用。

安装

使用pipeasy_install安装。

pip install clom

用法示例

导入:

>>> from clom import clom

生成命令:

>>> clom.echo("Don't test me")
"echo 'Don'\\''t test me'"

增加参数:

>>> clom.ls.with_opts('-a', '-t', l=True).with_args('~/')
'ls -a -t -l '~/''
>>> clom.curl('http://dev.host', X='POST', data='message=hello')
'curl -X POST --data message=hello http://dev.host'

使用子命令:

>>> clom.git.checkout('mybranch')
'git checkout mybranch'

轻松执行:

>>> clom.ls.shell.all()
['clom', 'clom.egg-info', 'docs', 'tests']

>>> clom.git.status.shell('.').first()
'# On branch master'

迭代结果:

>>> for path in clom.ls.shell():
...     print path
...
clom
clom.egg-info
docs
tests

处理错误:

>>> clom.vagrant.up.shell()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/Users/mthornton/Dropbox/Projects/python-clom/src/clom/shell.py", line 164, in __call__
    raise CommandError(status, stdout, stderr, 'Error while executing "%s" (%s):\n%s' % (cmd, status, stderr or stdout))
CommandError: Error while executing "vagrant up" (3):
No Vagrant environment detected. Run `vagrant init` to set one up.

组命令:

>>> from clom import AND, OR
>>> OR(clom.vagrant.up, clom.echo('Vagrant up failed'))
'( vagrant up || echo 'Vagrant up failed' )'
>>> OR(clom.vagrant.up, clom.echo('Vagrant up failed')).shell()
<clom.shell.CommandResult object at 0x10c4a85d0>
>>> print OR(clom.vagrant.up, clom.echo('Vagrant up failed')).shell()
No Vagrant environment detected. Run `vagrant init` to set one up.
Vagrant up failed

重复使用命令:

>>> vbox = clom.VBoxManage
>>> vbox.list.runningvms
'VBoxManage list runningvms'
>>> vbox.list.runningvms.shell.all()
['']
>>> vbox.list.vms.shell.all()
['"Windows Base" {949ec0af-92d0-4140-8a6c-36301ca6f695}']

后台任务:

>>> clom.VBoxHeadless.with_opts(startvm="Windows Base").background()
'nohup VBoxHeadless --startvm 'Windows Base' &> /dev/null &'
>>> clom.VBoxHeadless.with_opts(startvm="Windows Base").background().shell()
<CommandResult return_code=0, stdout=0 bytes, stderr=0 bytes>

>>> vbox.list.runningvms.shell.all()
['"Windows Base" {949ec0af-92d0-4140-8a6c-36301ca6f695}']

适用于面料:

>>> from fabric.api import run, local
>>> local(clom.ls)
[localhost] local: ls
clom            clom.egg-info   docs            nohup.out       tests
''

甚至可以创建fab命令:

>>> clom.fab.test('doctest', 'unit').deploy('dev')
'fab test:doctest,unit deploy:dev'
>>> clom.fab.with_opts('-a', hosts='dev.host').deploy.with_args('dev','test')
'fab -a --hosts dev.host deploy:dev,test'

请参阅Clom Documentation中的更多示例和api

运行测试

使用pytest运行测试:

pip install pytest
python tests/runtests.py -v --doctest-modules

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

推荐PyPI第三方库


热门话题
java GridBagLayout不填充区域   java Memozied Fibonacci未运行与常规Fibonacci解决方案   Java Web启动未启动问题   Java中异常和if-then的区别   java从命令提示符运行批处理文件获取错误   socket在Java中验证SSL证书的公共名称   如何在JAVA中检查字符串数组中的相等字   用java语言将音频文件转换成文本文件的语音识别   java为什么foo(1,2,3)没有传递给varargs方法foo(对象…)作为整数[]   java通过蓝牙将奇怪的数据从Arduino传输到Android   java ContainerRequestFilter获取空entitystream   java如何从安卓 studio中删除不兼容类型错误   基本Java错误   在Spring引导中使用REST API时发生java错误   javascript通过从SQL查询派生的URL打开页面