我必须从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()
问题是startdate
和data
之间的连接不起作用。特别是如果我在console.log()
内使用python.stdout.on('data', function(data){ ... });
,我会看到正确的值;否则,如果我在console.log()
之外使用python.stdout.on('data', function(data){ ... });
,我会看到空字符串。为什么呢?
有人可以帮助我吗?
谢谢!