我正在尝试在node.js服务器中运行一些python代码。
我将python运行为:
//handler.js
const spawn = require("child_process").spawn
module.exports = (parameter) => {
return new Promise((resolve, reject) => {
//***vvv***
const pythonProcess = spawn('python', [filepath/to/main.py, '--option', 'argument1', 'parameter', 'multiple\ word\ argument', 'argument2']).
//***^^^***
//and the functions that go with it for now
pythonProcess.stdout.on('data', function(data) {
consolde.log("data: ", data.toString())
})
pythonProcess.on('exit', function(code) {
console.log("EXIT: ", code.toString())
})
}
}
脚本有问题。我相信我在multiple\ word\ argument
上遇到了问题。我不知道在外壳中调用它时是否正确转义了空格。有什么办法可以检查吗?有某种方法可以做到吗?
这是在Linux环境中。
谢谢
答案 0 :(得分:2)
您无需在这里转义,因为库会在需要它的平台上为您完成任务。
@if ($errors->hasAny(['c1', 'c2', ...]))
<p>To Do</p>
@endif
答案 1 :(得分:1)
我在您的代码中看到的一件事是您正在返回一个诺言,但是您从未在实现上调用std::vector
或resolve
。
尝试做这样的事情:
reject
我认为您如何转义字符串参数上的空格没有问题。我使用此Python脚本进行了尝试,效果很好:
function callPython(parameter) {
return new Promise((resolve, reject) => {
const pythonProcess = spawn('python', [
path.resolve(__dirname, 'print_arguments.py'),
'--option',
'argument1',
'parameter',
parameter,
'multiple \word \argument',
'argument2'
]);
pythonProcess.stdout.on('data', data => {
console.log("data:", data.toString());
});
pythonProcess.stdout.on('exit', code => {
console.log("EXIT:", code.toString());
resolve();
});
pythonProcess.stdout.on('error', error => {
console.log('ERROR:', error.toString());
reject();
});
});
}
它只显示参数。
请查看此链接,以获取有关JavaScript Promise接口的更多信息:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
我希望对您有帮助