跳转到主要内容

Python的Shell力量。

项目描述

https://badge.fury.io/py/shell.py.png https://travis-ci.org/houqp/shell.py.svg?branch=master

将Shell脚本的优点带给Python。

安装

$ pip install shell.py

使用

执行shell命令

阻塞直到返回

>>> from shell import ex
>>> ex('echo hello shell.py').stdout()
'hello shell.py\n'

异步执行

>>> from shell import ex
>>> c = asex('echo hello shell.py')
>>> # do something else
...
>>> c.stdout() # wait until process exit and read stdout
'hello shell.py\n'

管道命令

from shell import ex
re = (ex("ifconfig")
      | "grep -A 1 eth0"
      | "grep inet"
      | "awk '{print $2}'"
      | "cut -d: -f 2").stdout()

或者

from shell import pipe_all
pipe_all(["ls -la ~",
          "awk '{print $9}'",
          "grep -E '^\.'",
          "wc -l"]).stdout()

使用字符串作为stdin

>>> from shell import instream
>>> instream("1 2 3").p("awk '{print $1}'").stdout()
'1\n'

这相当于

>>> from shell import ex
>>> ex("echo 1 2 3").p("awk '{print $1}'").stdout()

IO重定向

覆盖文件

>>> from shell import ex
>>> ex('echo yolo').wr('/tmp/out')
>>> ex('echo yolo') > '/tmp/out'

追加到文件

>>> from shell import ex
>>> ex('echo yolo').ap('/tmp/out')
>>> ex('echo yolo') >> '/tmp/out'

并行运行命令

阻塞直到所有命令返回

>>> from shell import parallel as par
>>> par.ex_all(['sleep 2', 'sleep 2']) # return in 2s

异步并行执行

>>> from shell import parallel as par
>>> pe = par.asex_all(['sleep 2', 'sleep 2']) # return immediately
>>> # do something else
...
>>> pe.wait()

设置工作目录

设置命令执行所在的目录

>>> with shell.cwd('~/server/data/upload/') as old_path:
>>>     shell.ex('find ./images -name "*.png"') | 'minify ./public' >> 'upload.log'

这相当于

>>> shell.ex('find ~/server/data/upload/images -name "*.png"') | 'minify ~/server/data/upload/public' >> '~/server/data/upload.log'

查看测试用例以获取更多示例。

测试

使用nosetests运行测试(至少v1.3.0)

$ make test

项目详情


下载文件

下载适合您平台文件的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源分发

shell.py-0.5.3.tar.gz (6.4 kB 查看哈希值)

上传时间:

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面