Python 執行js的2種解決方案

pythontab發表於2013-11-13

第1種方案

SpiderMonkey是Mozilla專案的一部分,是一個用C語言實現的JavaScript指令碼引擎, 該引擎分析、編譯和執行指令碼,根據JS資料型別和物件的需要進行記憶體分配及釋放操作;利用該引擎可以讓你的應用程式具有解釋JavaScript指令碼的能力。

要想使用spidermonkey得先安裝,方法如下:

cd /home/linuxany.com/

wget http://ftp.mozilla.org/pub/mozilla.org/js/js-1.7.0.tar.gz -O- | tar xvz

cd js/src

make -f Makefile.ref

mkdir -p /usr/include/smjs/ -v

cp *.{h,tbl} /usr/include/smjs/ -v

cd Linux_All_DBG.OBJ

cp *.h /usr/include/smjs/ -v

mkdir -p /usr/local/{bin,lib}/ -v

cp js /usr/local/bin/ -v

cp libjs.so /usr/local/lib/ -v

以上安裝完成後,執行/usr/local/bin/js 就應該可以啟動js解釋執行引擎了.

python使用舉例:

# coding:utf-8
import os
import tempfile
def call_js(js):
    f=tempfile.mktemp('sd', 'linuxany', '/tmp')
    f2=tempfile.mktemp('sd', 'linuxany', '/tmp')
                   
    fp=open(f,'w')
    fp.write(js)
    fp.close()
                   
    cmd="/usr/local/bin/js  %s > %s" % (f,f2)
                   
    os.system(cmd)
    result=open(f2).read()
    print result
if __name__ == "__main__":
    code='''
    function dF(s,n){
        n=parseInt(n);
        var s1=unescape(s.substr(0,n)+s.substr(n+1,s.length-n-1));
        var t='';
        for(var i=0;i第2種方案Python-Spidermonkey 這個Python模組允許執行Javascript相關功能,是python與javascript之間進行操作的橋樑,javascript的類,物件和函式都可以在Python中呼叫。它大量借鑑了克拉斯Jacobssen的JavaScript Perl模組,而這又是Mozilla的PerlConnect Perl的結合為基礎。安裝:svn checkout http://python-spidermonkey.googlecode.com/svn/trunk/ python-spidermonkey-read-only下載完後,先執行python setup.py build然後執行python setup.py install官方網站:http://code.google.com/p/python-spidermonkey/同時需要安裝Pyrex模組,一個支援python和C語言混編的模組。裝完後就用python其他模組一樣使用即可。

相關文章