从Node.js调用python脚本

时间:2015-10-08 18:30:18

标签: javascript python node.js spawn

我必须从Node.js代码调用python脚本。 我知道我可以使用函数spawn来创建一个新的子进程,然后调用脚本python。

这就是问题:我有一个名为date的变量(在Node.js中使用),我必须在我的脚本python中使用命令行参数。

这是我在Node.js中的代码:

...
function searchOnGoogle(query, date, options, out, cb) {
    // startdate = 2451545 // Julian date for 2000/01/01

    var python = require('child_process').spawn('python', ["getTweetStartDate.py", date]);
    var startdate = "";
    python.stdout.on('data', function(data){ startdate += data });
    // Tweet start date set 1 month before the tweet date
    ...

这是" getTweetStartDate.py" :

import math
import conversionDate
import sys

def oneMonthBeforeJulianDate(dataStartTweet):
    dataStartTweetJulian = conversionDate.jd2date(math.modf(float(dataStartTweet))[1])
    year = dataStartTweetJulian[0]
    month = dataStartTweetJulian[1]
    day = dataStartTweetJulian[2]

    if month == 1:
        month = 12
        year -= 1
    else:
        month -= 1

    dataStartTweetFinal = conversionDate.date2jd(year, month, day)

    filename = "/home/IPA/IPA_ws/gum_en/src/DEBUG_"+str(randint(0, 10000000000000000000))+".txt"
    new_file = open(filename, 'w')
    new_file.write(str(dataStartTweetFinal))
    new_file.close()

    return dataStartTweetFinal

dataGiuliana = sys.argv[1]
print oneMonthBeforeJulianDate(dataGiuliana)
sys.stdout.flush()

问题是startdatedata之间的连接不起作用。特别是如果我在console.log()内使用python.stdout.on('data', function(data){ ... });,我会看到正确的值;否则,如果我在console.log()之外使用python.stdout.on('data', function(data){ ... });,我会看到空字符串。为什么呢?

有人可以帮助我吗?

谢谢!

0 个答案:

没有答案