프로그램 자동 실행하기

kpark2000·2024년 7월 28일

한 exe 프로그램 아래 subprocess 모듈로 child 프로세스들을 붙여서 여러 프로그램을 동시에 돌리는 소스를 짜보았다. 개인 PC에서 원할 때 배치 파일이나, 정적 이미지, PyInstaller로 한번 말아준 exe 프로그램 등을 직접 돌려야 할 때 사용한 소스다.

이런 식으로 특정 경로에 프로그램이 목록화되어 있고.

각 폴더 안에는 패키징 요소인 이닛 파일도 있지만 커스텀 메인 파일도 있다. 빌트인 메소드명으로 파일을 생성해주면 main.py 경로를 찾아서 실행시키는 수고로움은 덜 수 있을듯.

ASIS 폴더 구성
- __init__.py
- main.py (또는 __main__.py)
- /기타 프로그램 파일

os 모듈로 디렉터리를 읽고 subprocess 모듈로 파이썬 프로그램을 실행시켜 보겠다.

import os
import subprocess


def run_main_py_in_folders(directory):
    # 주 경로 유효성 체크
    if not os.path.exists(directory):
    	# 콘솔에 에러 찍음
        print(f"Directory '{directory}' does not exist.")
        return

    # 주 경로에서 하위 경로를 list() 하고 폴더가 아닌 경우는 제외
    folders = [folder for folder in os.listdir(directory) if os.path.isdir(os.path.join(directory, folder))]

    for folder in folders:
        # main.py 파일 존재 확인
        main_py_path = os.path.join(directory, folder, "main.py")
        if os.path.exists(main_py_path):
            try:
                # 최종 경로에 있는 프로그램 파일을 파이썬으로 실행함
                subprocess.Popen(["python", main_py_path])
                print(f"Running main.py in '{folder}' folder...")
            except subprocess.CalledProcessError as e:
                print(f"Error running main.py in '{folder}': {e}")
        else:
            print(f"main.py not found in '{folder}' folder.")


if __name__ == "__main__":
    # 주 경로
    target_directory = 'C:\\...Python\\Tools\\Batches'
    # 주 메소드 실행
    run_main_py_in_folders(target_directory)
profile
초보자를 위한 프로그래밍 정리

0개의 댓글