gpt4 book ai didi

python - Node与Python之间的通信

转载 作者:行者123 更新时间:2023-12-01 02:57:35 25 4
gpt4 key购买 nike

我有一个 Node 脚本:

//start.js
var spawn = require('child_process').spawn,
py = spawn('python', ['compute_input.py']),
data = [1,2,3,4,5,6,7,8,9],
dataString = '';

py.stdout.on('data', function(data){
dataString += data.toString();
});
py.stdout.on('end', function(){
console.log('Sum of numbers=',dataString);
});
py.stdin.write(JSON.stringify(data));
py.stdin.end();

和一个Python脚本:

## compute_input.py

import sys, json, numpy as np

#Read data from stdin
def read_in():
lines = sys.stdin.readlines()
#Since our input would only be having one line, parse our JSON data from that
return json.loads(lines[0])

def main():
#get our data as an array from read_in()
lines = read_in()

#create a numpy array
np_lines = np.array(lines)

#use numpys sum method to find sum of all elements in the array
lines_sum = np.sum(np_lines)

#return the sum to the output stream
print lines_sum

#start process
if __name__ == '__main__':
main()

这两个脚本位于文件夹 my_folder/

如果我在 my_folder 内并运行命令 node start.js ,我得到Sum of number=45 ,脚本正在运行。

如果我在文件夹外部并运行命令 node my_folder/start.js ,我得到Sum of number= ,该脚本无法运行。

为什么?

最佳答案

最明显的原因:您正在为 python 脚本使用相对路径,因此会在当前工作目录中查找它。如果您从同一目录执行node.js脚本,则会找到python脚本,如果您从其他任何地方执行它(不恰好包含compute_input.py文件xD),则找不到python脚本并且python调用失败。

使用绝对路径,应该没问题(如何从 Node.js 脚本获取绝对路径留作练习)

关于python - Node与Python之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44068455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com