Python的Shell力量。
项目描述
将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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f0ce6c0688b84392a04311f27f4f0661cd37ef532eb99703b5e17b8cb58e93a1 |
|
MD5 | b4415d341ec719d7214c4280b46369af |
|
BLAKE2b-256 | 4598ca6829dbab4aa0a1b3abec62c15be979b96a96612f5adfffec38cc7ca353 |