我尝试使用 child_process.exec 函数从 Node.js 应用程序执行简单的 Python 命令,但遇到语法错误。这是相关的代码片段:
const { exec } = require('child_process');
const Execute = (code) => {
return new Promise((resolve, reject) => {
exec(`python -c ${code}`, (err, stdout, stderr) => {
if (err) {
console.log(err);
console.log(`Execution error: ${err.message}`);
reject(err);
return;
}
if (stderr) {
console.log(`stderr: ${stderr}`);
}
console.log(`Output: ${stdout}`);
resolve(stdout);
});
});
}
module.exports = { Execute };
当我尝试执行以下Python代码时:
print("hello world")
我收到语法错误:
SyntaxError: invalid syntax
生成的命令是:
python -c print("hello world")
我期望的输出是:
hello world
为什么在执行有效的 Python 代码时会出现语法错误? 如何使用 Node.js 中的 exec 函数正确执行 Python 代码而不遇到语法错误?
python -c
的参数必须是单个单词,因此必须将其放在引号中。
exec(`python -c '${code}'`, (err, stdout, stderr) => {
请注意,如果
code
包含单引号,这将不起作用,因为这将终止参数。您需要更换它们:
code = code.replace(/'/g, "'\"'\"'");