巨蟒的外壳力量。

shell.p的Python项目详细描述


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

将shell脚本的好部分引入python。

安装

$ pip install shell.py

用法

执行shell命令

阻塞直至返回:

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

异步执行:

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

管道命令

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

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

使用字符串作为stdin

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

这相当于:

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

IO重定向

覆盖文件:

>>>fromshellimportex>>>ex('echo yolo').wr('/tmp/out')>>>ex('echo yolo')>'/tmp/out'

附加到文件:

>>>fromshellimportex>>>ex('echo yolo').ap('/tmp/out')>>>ex('echo yolo')>>'/tmp/out'

并行运行命令

阻止,直到所有命令返回:

>>>fromshellimportparallelaspar>>>par.ex_all(['sleep 2','sleep 2'])# return in 2s

异步并行执行:

>>>fromshellimportparallelaspar>>>pe=par.asex_all(['sleep 2','sleep 2'])# return immediately>>># do something else...>>>pe.wait()

设置工作目录

设置执行命令的目录:

>>>withshell.cwd('~/server/data/upload/')asold_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'

有关更多示例,请参见测试用例。

测试

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

$ make test

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

推荐PyPI第三方库


热门话题
空字符串检查在java中未按预期工作   JavaSpringWebClient:自动计算主体的HMAC签名并将其作为头传递   foreach是否有一个Java等效的foreach循环和一个引用变量?   java如何在Eclipse中导入jar   使用特定第三方或java时lombok触发错误。*方法或构造函数   安卓 java将对象数组转换为int数组   java使一定百分比的JUnit测试通过   java Android:将Seekbar的一个值与另一个值进行比较   java将int数组(图像数据)写入文件的最佳方式是什么   java取代了系统。yml的构造函数内的getProperty   sqlite Java将公钥和私钥转换为字符串,然后再转换回字符串   安卓获取白色像素并将其保存到java opencv中的数组中   java为什么是ServerSocket。setSocketFactory静态?   Java数组似乎在不直接修改的情况下更改值