在python中使用命令行的最简单方法。命令行对象映射器。用于生成POSIX命令行参数、命令和参数的库。对结构任务非常有用。
clom的Python项目详细描述
clom是一个python命令行对象映射器。它旨在生成生成命令和转义参数 便于命令行交互。当与Fabric或subprocess一起使用时,它特别有用。
安装
使用pip或easy_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