巨蟒的外壳力量。

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 log4j找不到log4jtest。房产?   我在java线程“awteventque1”中获得异常。lang.NullPointerException   java为什么在使用完整路径从文件系统读取文件时出错?   java如何迭代所有注册表项?   java中的安卓 Opencv SVM未正确训练   多线程Java ThreadPoolExecutor关闭特定线程?   如何使用Java NIO CreateDirectory方法设置目录所有者组?   java NatTable混合了固定宽度的列和可调整大小的填充剩余空间   java如何删除特定网络,即使该网络是由安卓上的其他设备创建的?   java Guava toJavaUtil()不存在   java对许多常量使用枚举是有效的memorywise?   java是否可以使用坐标定位JButton?   从WSDL生成java代码导致异常   java如何在安卓中导出javadoc   爬行JAX中的java NoClassDefFoundError错误   java为片段中的文本视图设置区域设置   发送最后一条消息后发生Java RMI RemoteException