Skip to content
조회 수 31256 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

자바스크립트 종말각?! HTML에서 파이썬 실행하는 PyScript 등장!

 

 

이건 정말 놀라운 일이네.

파이썬 사용자가 얼마나 많은데,,,,

이제 혁명적인 브라우저 기능을 제공하겠구만!

 

 


 

<html>

<head>

<script defer src="https://pyscript.net/alpha/pyscript.js"></script>

<link rel="stylesheet" href="https://unpkg.com/@picocss/pico@latest/css/pico.min.css" /> 

</head>

<body>

 

<py-script>

print('hello world')

</py-script>

</body>

</html>

 

 


링크 : https://nomadcoders.co/python-for-beginners?utm_campaign=pyscript&utm_source=youtube&utm_medium=cpc&utm_id=20220522

 

 

# Node.js환경에서 javascript로 python 스크립트를 실행하는 방법

=> node의 기본 내장 모듈인 "child-process" 를 사용하면 된다.

(python-shell 등의 외부 라이브러리를 사용할 수도 있긴 하다.)

 

이번 글에서는 아래의 사항을 순서대로 정리한다.

 

1. 기본 사용법

2. 자바스크립트로 "파이썬 파일 실행" 방법

3. 자바스크립트로 "파이썬 함수 실행" 방법

4. 자바스크립트로 "파이썬 함수에 인수 전달" 호출 방법

 

# 기본 사용법

1. 실행 : child-process 모듈의 spawn을 통해 파이썬 파일을 실행한다.

const result = require('child_process').spawn('python', [ '파이썬파일.py', '매개변수1', '매개변수2', ... ]);

 

2. 결과 : stdout의 이벤트리스터를 통해 실행 결과를 받는다.

result.stdout.on('data', function(data) {

      console.log(data.toString());

});

 

<기본 사용법 코드 전문>

// 1. child-process모듈의 spawn 취득
const spawn = require('child_process').spawn;

// 2. spawn을 통해 "python 파이썬파일.py" 명령어 실행
const result = spawn('python', ['파이썬파일.py']);


// 3. stdout의 'data'이벤트리스너로 실행결과를 받는다.
result.stdout.on('data', function(data) {
    console.log(data.toString());
});

// 4. 에러 발생 시, stderr의 'data'이벤트리스너로 실행결과를 받는다.
result.stderr.on('data', function(data) {
    console.log(data.toString());
});

 

const result = spawn('python', ['파이썬파일명.py', 매개변수1, 매개변수2, ... ]);

//이 코드는 "python 파이썬파일.py 매개변수1, 매개변수2" 명령어로 파이썬 코드를 실행는 것과 동일하게 작동한다. 

 

 

# python 코드 실행 방법

1. python 코드 

# print.py 파일

print('저는 카레유 입니다')

- "저는 카레유입니다"를 출력하는 파이썬 코드다.

 

 

2. javascript 코드에서 파이썬 코드 실행 및 결과 출력

// connectPython_print.js 파일

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

const result = spawn('python', ['print.py'));

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

result.stderr.on('data', function(data) {
    console.log(data.toString());
});

1) child-process의 spawn을 통해 "python print.py" 명령어를 실행하여 파이썬 코드를 구동한다.

2) stdout의 'data' 이벤트 리스터를 통해 결과를 받아서 출력한다.

3) 위 코드에서 data를 toString()없이 사용하면, 버퍼가 출력되니 주의.

  - <Buffer 49 20 61 6d 20 70 79 74 68 6f 6e 0a>

 

 

# 파이썬  함수 실행 방법

1. 함수가 정의된 파이썬 코드 작성

# function_print.py 파일

def getValue():
    print ("value")

if __name__ == '__main__':
    getValue()

1) 파라미터가 없는 getValue함수를 선언하여 "value" 값을 출력하도록 했다.

 

2) if문을 통해 실행환경이 '__main__' 인 경우, getValue함수를 호출하도록 설정했다

  - "python 파이썬파일.py"으로 파이썬 파일을 직접 실행하면 내부 변수 __name__에 "__main__" 값이 할당된다.

  - spawn('pyton', ['파이썬파일명'.py])를 실행하면, 내부적으로  "python 파이썬파일.py"을 실행한다.

 

 

- 따라서 __name__ 값이 __main__이 되어, 위 코드는 getValue()함수를 실행하게 된다.

  - 참고) import 등을 통해 모듈로 불러와 사용할 땐, __name__ 에 __main__이 아니라, 모듈 명이 들어간다.

 

 

2. 자바스크립트에서 파이썬 함수 호출

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

const result_01 = spawn('python', ['function_print.py'], );

result_01.stdout.on('data', (result)=>{
    console.log(result.toString());
});

- 자바스크립트에서 파이썬 함수를 출력하는 것은 다를게 없다.

- 단, 파이썬 파일에 __name__ == '__main__' 인 경우, 함수를 호출하도록 설정되어 있어야 한다.

 

 

# 파이썬 함수 "인수 전달" 호출 방법

1. 인자를 받는 함수가 정의된 파이썬 코드

# function_args.py 파일

import sys

def getName(name, age):
    print (name + " : " + age)

if __name__ == '__main__':
    getName(sys.argv[1], sys.argv[2])

1) 매개변수를 받기위해 파이썬의 sys 모듈을 임포트했다.

2) name, age 인자를 받아, 출력하는 getName함수를 정의했다.

3) 실행환경 체크 조건문에서 함수를 호출하면서 sys.argv[1], sys.argv[2] 로 인수를 전달했다.

 

 

2. 자바스크립트에서 파이썬 함수를 호출하면서 매개변수 전달

const result_02 = spawn('python', ['function_args.py', '카레유', '20']);

result_02.stdout.on('data', (result)=>{
    console.log(result.toString());
});

// 출력 결과 => "카레유 : 20"

1) spawn을 통해 "python function_args.py"를 실행시키면서, "카레유", 20"을 파라미터로 전달 했다.

 


참고로 child-process 모듈에서는 spawn뿐만 아니라, exec을 통해서도 외부 명령어를 실행할 수 있다.

1. spawn은 별도 프로세스를 띄워서 명령어를 실행하고,

2. exce은 셸을 띄워서 명령어를 실행한다.

 

예를 들어 아래 코드는 현재 경로의 파일 목록을 출력한다.

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

const result = exec('ls');

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

유닉스, 리눅스 환경에서는 ls를 사용하고, 윈도우 환경에선 dir 을 사용하면 된다.

 

도움이 되시길.

 

 

p.s : 기본적으로 컴퓨터에 python이 설치되어 있어야 한다.

 

< 파이썬 연동 호출 시, Module Not Found Error 발생할 경우 참고 >

[Node.js] javascript로 python 연동 호출 오류: Module Not Found Error

 

 

 

 

로그인 후 댓글쓰기가 가능합니다.

?

  1. 21
    Dec 2011
    14:36

    Excel) 엑셀 콤보박스 대화상자 목록지정하기

    CategoryExcel Views29390
    Read More
  2. 17
    Mar 2010
    13:35

    한글 HEX 코드표

    Category컴퓨터잡담 Views29525
    Read More
  3. 11
    Nov 2014
    08:12

    Google Spreadsheet (Docs) 에서 우리은행 환율정보 이용하기

    Category[Docs]스프레드시트 Views29869
    Read More
  4. 12
    Mar 2010
    19:37

    rss리더기

    Category컴퓨터잡담 Views29915
    Read More
  5. 06
    Mar 2012
    08:34

    autohotkey) 윈도우 ahk_id 추출하기

    CategoryAutoHotKey Views30088
    Read More
  6. 23
    Oct 2011
    06:07

    eXCEL VBA)엑셀파일 열지않고 내용 불러오기

    Category컴퓨터잡담 Views30517
    Read More
  7. 10
    Apr 2011
    12:46

    PF사용...페이징 중지를 통한 시스템 성능개선

    Category프로세스 Views30889
    Read More
  8. 05
    Aug 2009
    12:55

    네이버, 다음지식 php로 RSS 출력 만들기

    Category컴퓨터잡담 Views31009
    Read More
  9. 05
    Jan 2012
    07:01

    Excel Vba) 현재 셀에서 한줄내림 (activecell.offset(1,0).Select)

    CategoryExcel Views31019
    Read More
  10. 08
    Jun 2022
    08:47

    자바스크립트 종말각?! HTML에서 파이썬 실행하는 PyScript 등장!

    Category파이썬 Views31256
    Read More
  11. 04
    Oct 2011
    09:46

    VBA - 시트/셀, 엑셀 값만 복사하기! (VBA을 이용한 복사영역 조절)

    Category컴퓨터잡담 Views31418
    Read More
  12. 20
    Sep 2010
    18:00

    엑셀에서 날짜와 시간 계산하는 법

    Category컴퓨터잡담 Views31664
    Read More
  13. 07
    Aug 2009
    21:15

    컴퓨터 OS부팅도 이젠 초고속 전쟁이다.

    Category컴퓨터잡담 Views31754
    Read More
  14. 05
    Aug 2009
    14:16

    네이버 만화 PHP로 RSS 출력 만들기

    Category컴퓨터잡담 Views31787
    Read More
  15. 24
    Aug 2009
    09:09

    MySQL TABLE 손상시 대응방법(db 내용이 안 나올때)

    Category컴퓨터잡담 Views31833
    Read More
  16. 13
    Feb 2011
    21:37

    reader_sl.exe , AdobeARM.exe 프로세스 삭제방법

    Category프로세스 Views32054
    Read More
  17. 19
    Nov 2009
    08:35

    mysql 재시작, 사용자 추가 명령어

    Category컴퓨터잡담 Views32229
    Read More
  18. 30
    Oct 2013
    16:51

    ahk) 열려진 엑셀창의 값 불러오기

    CategoryAutoHotKey Views32528
    Read More
  19. 30
    Jun 2009
    15:36

    현재 쿠키,세션 값 전부 보기

    Category컴퓨터잡담 Views32612
    Read More
  20. 14
    Jul 2022
    15:08

    특정 파일을 제외한 현재 디렉토리 내의 모든 파일을 삭제하는 배치파일

    Category컴퓨터잡담 Views32729
    Read More
Board Pagination Prev 1 ... 41 42 43 44 45 46 Next
/ 46

http://urin79.com

우린친구블로그

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소