使用 Node.js child_process.exec 执行简单 Python 代码时出现语法错误

问题描述 投票:0回答:1

我尝试使用 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 node.js syntax-error child-process
1个回答
0
投票

python -c
的参数必须是单个单词,因此必须将其放在引号中。

        exec(`python -c '${code}'`, (err, stdout, stderr) => {

请注意,如果

code
包含单引号,这将不起作用,因为这将终止参数。您需要更换它们:

code = code.replace(/'/g, "'\"'\"'");
© www.soinside.com 2019 - 2024. All rights reserved.