巨蟒的外壳力量。

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 Cassandra复制因子大于节点数   java J2EE JTA事务回滚不适用于OSE Glassfish 4.0(Build 89)   java spring安全预认证用户登录   org的java类文件。反应流。从RxJava编译示例时未找到Publisher?   java在使用dataFormat作为POJO通过Camel调用Web服务时无法设置SOAP标头   Javafx类的java静态实例   java如何防止一个部件在关闭时覆盖另一个部件的位置   sql server无法从我的java代码连接到数据库   java在JList(Swing)中显示带有的ArrayList   从Java中的CXF服务获取WSAddressing数据   使用资产文件夹进行java简单json解析(本地)   java LDAPException未绑定的无效凭据   JavaJSFspring部署到weblogic   JAVA中字符数组中的特定元素排列?   如果脚本位于不同的目录中,则ant不会使用exec标记运行Javashell脚本