1、常用方法
一般插件开发中,我们用到的是这个方法:subprocess.Popen()
它将开辟一个新的子进程并返回一个Popen对象,该对象有一个重要的方法:
popen.communicate(input)
该方法可与第三方程序通信,输入及接收输出,这样我们就可以得到第三方程序运行时出现的信息了。
input就是一个输入,可为空。
这个方法返回一个元组,里面有两个值,一个是输出,一个出错的信息。输出的值已经对换行符作了处理,所以我们得到的值只是一行字符串。我们要正常格式显示的话就要处理一下,以下是处理的程序:
stdout=popen.communicate()
print(re.sub("\\n","\n",stdout))
2、在sublime text 2和sublime text 3中调用的区别
在开发过程中我发现sublime text 3不能自动搜索系统路径(PATH)中的程序,而是要指定具体的程序位置才能正常运行,如compile_scripts.sh中使用到了luajit,它在/usr/local/bin/luajit这个位置,compile_scripts.sh中没有指定这个具体的位置,在sublime text 2中运行没有问题,但在sublime text 3中没有成功,那我们应该怎么办呢,这就用到一个参数env了,这个参数可以设置环境变量,它是一个字典类型。
subprocess.Popen(...,env={"luajit":"/usr/local/bin/luajit"})
通过上面的设置就能正确运行luajit了。下面是一个完整的使用过程:
args=["quick_cocos2d-x/bin/compile_scripts.sh","-i","scripts","-o","res/game.zip"]
process=subprocess.Popen(args,cwd=path,env={"luajit":"/usr/local/bin/luajit"})
stdout=process.communicate()
print(re.sub("\\n","\n",stdout))