Skip to content

Instantly share code, notes, and snippets.

@Gustavo-Kuze
Last active January 2, 2021 12:07
Show Gist options
  • Save Gustavo-Kuze/565c5b8598c2e091cab3d909a3fd28cb to your computer and use it in GitHub Desktop.
Save Gustavo-Kuze/565c5b8598c2e091cab3d909a3fd28cb to your computer and use it in GitHub Desktop.
Invocar um script Python no NodeJS

Para invocar um script Python dentro do NodeJS, basta utilizar o spawn do child_process

Node

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

const pythonProcess = spawn(
  'python',
  [path.resolve(__dirname, './rename_dirs.py')],
  {
    cwd: 'D:\\python',
  },
);

pythonProcess.stdout.on('data', (data) => {
  const textChunk = data.toString('utf8'); // buffer to string

  util.log(textChunk);
});

Python

import os
import sys

def main():
    print('Enviar dados para o NodeJS')
    sys.stdout.flush()

if __name__ == '__main__':
    main()

NOTAS:

  1. Caso queira passar parâmetros para o script Python, basta passar mais strings no array (segundo parametro do método spawn)
  2. Para que a textChunk receba a saída do código python, no script rename_dirs.py, é necessário executar o comando sys.stdout.flush() após o print('enviar dados para o NodeJS')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment