上周去三亚度假,玩的还行,价格也还行,如果你是临时起意去旅游的话,可以选择途牛自助,如果是长线计划,那么强烈推荐你用去哪儿+美团+大众的方案,巨靠谱 ! 在三亚这几天,一直在海边寻找比基尼,过程中被晒伤了,回北京浑身特么的痒痒…. 睡不着,就写了个基于subprocess的封装模块…
因为后续的项目会大量的用python调用java的东西,python的系统调用模块,最好用的肯定是subprocess了,但对于我这种喜欢造轮子的人,肯定希望subprocess使用起来更加的舒服方便,需要说明的是subprocess在实现高级功能时候,有些掉链子,比如超时的功能,subprocess本身是不提供的,需要我们自己来绕着实现。另外subprocess也没有合理的管道输出功能,我自己封了一层,里面是yield返回值,这样你就可以用迭代器来获取每次的实时输出了。
关于python easyrun模块介绍,文章的原文地址是,http://xiaorui.cc/?p=1941
项目名字
easyrun
介绍
一个subprocess模块的封装,让python更加方便地进行各种系统调用。
[开发easyrun的环境是python3哦]
安装
pip安装
pip install easyrun
源码安装
git clone git@github.com:rfyiamcool/easyrun.git cd easyrun python setup.py install
使用方法
只单纯的执行,然后返回linux run code和执行状态
>>> import easyrun
>>> r = easyrun.run(‘uptime’)
04:06:37 up 2 min, 1 user, load average: 0.20, 0.19, 0.08
>>> r.output
>>> r.success
True
>>> r.retcode
0
捕捉所有的执行结果
>>> r = easyrun.run_capture(‘uptime’)
>>> r.output
‘ 04:07:16 up 2 min, 1 user, load average: 0.11, 0.17, 0.08\n’
>>> r.success
True
>>> r.retcode
0
把输出的结果精简过,maxlines是控制行数
print(run_capture_limited(‘ls’, maxlines=2).output)
easyrun example usage:
from easyrun import run_capture
r = run_capture(‘ls -la’)
if r.success:
print(r.output)
else:
print(“Error: ‘%s’ exit code %s” % (r.command, r.retcode))
print(” …”)
# print last three lines of output
for line in r.output.splitlines()[-3:]:
print(” %s” % line)
上面只是讲了easyrun的简单实用方法,另外关于subprocess的超时、异步、实时输出的实用方法,我测试例子还没有写,有时间我会补充上去的。
[互相拍砖]