Search code examples
pythonnode.jsexpressspawn

Can't read a file in python using node


I'm running python in a node web app, and I'm trying to load and read a file in python, do something with it, then spit it out to node.js.

When I run the following python code, nothing happens.

Python

import json
import sys

with open('trainingData.json') as file:
    data = json.load(file)

print(data)
print('hello from python')
sys.stdout.flush()

When I remove with open, then it works well. How can I read a file in python and call that file in node.js? Here's the node code

Node

app.get('/', (req, res) => {
    const spawn = require('child_process').spawn;
    const process = spawn('python', ['./python/script.py', 'Hello', 'World']);
    process.stdout.on('data', data => console.log(data.toString()));

    res.send('he');
});

(When I run the python file fro the terminal, it works correctly.)


Solution

  • You can use spawn's cwd (current working directory) option, to specify the directory. To set it to the "current" current working directory use __dirname.

    const process = spawn('python', ['./python/script.py', 'Hello', 'World'], {cwd: __dirname});