[Python] subprocess

ChatGPT’s answer

It allows you to spawn new processes, connect to their input/output/error pipes, and obtain their return codes.

This module can be used for various purposes, such as running shell commands, launching external programs, and managing child processes.

It provides a more powerful alternative to the os.system() function, which is often used to run shell commands from within Python scripts.

  • subprocess는 여러 방법으로 시스템 명령어를 실행하는 모듈

  • ex) 폴더 내 목록 출력

    import subprocess
    
    result = subprocess.run(['cmd', '/c', 'dir'], 
                            stdout=subprocess.PIPE, 
                            encoding='cp949')
    # 리눅스의 경우 'ls', '-l' 로 실행
    
    print(result.stdout)
    
    • run() : ‘cmd’, ‘/c’, ‘dir’ 명령어를 실행하기 위한 함수
    • stdout=subprocess.PIPE : 프로세스의 표준 출력을 캡처하도록 subprocess에 지시

    Untitled

  • ex) 실행 결과를 텍스트 파일에 저장

    with open('output.txt', 'w') as f:
        subprocess.run(['cmd', '/c', 'dir'], stdout=f)
    

    Untitled

  • ex) python 파일 실행

    import subprocess
    
    process = subprocess.Popen(['python', 'hello-world.py'], 
                               stdout=subprocess.PIPE)
    
    for line in process.stdout:
        print(line.decode(), end='')
    
    • Popen() : 파이썬 스크립트를 실행하는 새로운 Python 프로세스를 생성

    Untitled


References