无法更改从nodeJS到Python的spawn发送的整数

时间:2018-08-29 13:22:19

标签: python node.js

我正在尝试如何从NodeJS运行python,并在线找到了child_proccess生成解决方案。

// server setup constant
const express  = require('express');

// The application
const app = express();

// Port the server runs on
const port = 8080;

app.listen(port, () => console.log("running (main.js)"));


const spawn = require('child_process').spawn;
const py = spawn('python', ['main.py', "Message", 12]);


py.stdout.on('data', data => {
    console.log(data.toString());
});

py.stdout.on('end', () => {
    console.log("end of transmission");
});

我发送的第二个参数是整数12。我尝试在python脚本中递增数字,然后将其打印回去。奇怪的是,如果我更改了作为参数从Node传递到Python的String,则没有问题。如果我尝试更改任何数字,Python将会崩溃。数字是否以常量形式传输,这就是为什么?如果可以,我该如何解决?

Python:

import sys, json as np

message = sys.argv[1]
number = sys.argv[2]

number = number + 1

print(message)
print("Added one to number")
print(number)


sys.stdout.flush()

1 个答案:

答案 0 :(得分:1)

sys.argv是一个字符串列表。使用int()函数将字符串转换为数字。

import sys, json as np

message = sys.argv[1]
number = int(sys.argv[2])  # convert string to number

number = number + 1

print(message)
print("Added one to number")
print(number)


sys.stdout.flush()