使用 node exec 访问 python 文件中的函数

Use node exec to access a function in a python file

我是节点 child_process 的新手,我正在尝试执行 python 并将其结果返回给节点

我想使用 exec,不是执行一个简单的命令,而是访问一个 python 文件并执行它

说我的python.py

try :
    import anotherPythonFile
    print('hello2')
    # anotherPythonFile.names().getNames()  
except Exception as e :
    print(e)

我尝试对此进行测试并返回 hello2,但我什么也没得到

exec('D:\prjt\test\python.py', (er, stdout, stderr)=>{
  console.log('exec test', stdout);      
}) 

如果这有效,我将取消注释并执行 anotherPythonFile.names().getNames()

这里有什么错误?

此外,我可以直接访问 anotherPythonFile 并以某种方式设置我要执行的功能吗?我想做(例子)

exec('D:\prjt\test\anotherPythonFile.py.names().getNames()', (er, stdout, stderr)=>{
  console.log('exec test', stdout);      
}) 

这可能吗?

谢谢

下面是 运行 来自 Node.js 的 Python 脚本并读取其输出的示例:

hello.py

print("Hello from Python!")

main.js

const { spawn } = require('child_process');

const py = spawn('python3', ['/home/telmo/hello.py'])

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

运行 node main.js returns:

Hello from Python!

备选方案

您也可以使用 execFile 代替 spawn:

const { execFile } = require('child_process');

const py = execFile('python3', ['/home/telmo/hello.py'], (error, stdout, stderr) => {
  if (error || stderr) {
    // Handle error.
  } else {
    console.log(stdout)
  }
})

exec:

const { exec } = require('child_process');

const py = exec('python3 /home/telmo/hello.py', (error, stdout, stderr) => {
  if (error || stderr) {
    // Handle error.
  } else {
    console.log(stdout)
  }
})