sublime插件调用第三方程序

在sublime插件中调用第三方的程序(如系统命令行),是通过subprocess模式来进行的,关于subprogress中包含的方法及参数,请参看这里: http://www.oschina.net/question/234345_52660

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))

转载于:https://my.oschina.net/lonewolf/blog/178625

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值