Dev/node.js

node.js에서 spawn 으로 python 실행

uragil 2022. 11. 14. 16:40
반응형

node.js에서 새로운 프로세스 띄워 python 파일을 실행시키는 작업

 

먼저 test.py 이름으로 파이썬 파일을 만들어준다. 

내용은 랜덤함수로 승리번호와 나의번호를 생성하여 주는 간단한 소스 

 

test.py

import random
def makelotto(a):
    while len(a) < 6:
        lotto = random.randint(1, 45)
        if lotto not in a:
            a.append(lotto)
    
win = []
my = []

makelotto(win)
makelotto(my)

win.sort()
my.sort()

print('Win:', win)
print('Num:', my)

 

그리고 node에서 실행시키기 위해 spawn.js 이름으로 파일을 생성한다.

spawn.js

const spawn = require('child_process').spawn;
const process = spawn('python', ['test.py']);

process.stdout.on('data', function(data){
    console.log(data.toString());
});

process.stderr.on('data', function(data){
    console.error(data.toString());
});

 

const spawn = require('child_process').spawn;

 

노드에서 다른 프로그램을 실행하거나 명령어를 수행하고 싶을 때 사용하는 모듈

const process = spawn('python', ['test.py']);

python test.py 를 실행하기 위해 

spawn의 첫번째 인수로  'python' 을 넣고 뒤에는 파일명을 배열로 넣어준다. ['test.py'] 

process.stdout.on('data', function(data){
console.log(data.toString());
 
 
process.stderr.on('data', function(data){
console.log(data.toString());
 
 
결과는 stdout  data로 err는 stderr data로 콘솔에 찍힌다. 
 
cmd창에서 node spawn.js 을 실행하면
test.py 가 실행되어 결과값이 찍힌것을 확인 할 수 있다. 

 

문제점 - stdout data로 출력되기 때문에

그레프나 그림 출력은 안되는데 어떡하는건지 모름.

node.js 를 사용해 보고 싶었는데 뭐하는 건지 아직 감이 안온다.

반응형