sublime插件调用第三方程序
生活随笔
收集整理的這篇文章主要介紹了
sublime插件调用第三方程序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
在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
總結
以上是生活随笔為你收集整理的sublime插件调用第三方程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ios RunLoop 用法
- 下一篇: Android Application