如何使用Nodejs執行Python Script

Javascript是最近蠻熱門的程式語言(尤其是Nodejs與iojs的出現),在Github上面Javasciprt也是第二多被使用的語言。想要看程式語言的排名可以到 這裡 看。我原本其實是以Python為主,不過最近開始慢慢轉到Nodejs後,發現可能要用到之前寫的python程式,但是又很懶得重新再把python的程式再改寫成Nodejs。所以當然希望可以用Nodejs呼叫之前寫的Python程式,然後再經過Nodejs作一些網頁/後端的處理。

不過因為這篇的應用方式比較簡單,所以我直接將步驟寫下來:


使用npm下載python-shell

1
npm install python-shell


app.js

1
2
3
4
5
6
7
8
9
10
11
12
var PythonShell = require('python-shell');
var options = {
mode: 'json',
pythonOptions: ['-u'],
scriptPath: './',
};
var test = new PythonShell('test.py', options);
test.on('message',function (message) {
console.log(message);
});


test.py

1
2
3
4
5
6
7
import json
import time
print json.dumps({'bar': ('baz', None, 1.0, 2), 'hi':'1'})
time.sleep(3)
print json.dumps({'bar': ('baz', None, 1.0, 2), 'hi':'2'})
time.sleep(3)


當你執行node app.js時,他就會自動一行一行顯示出來。前提是你在pythonOpetions裡面要加上-u的參數,如果沒有加的話,test.py會執行完才讓event:message抓到。(原因)

詳細的API說明可以到 python-shell on Github 查看。