[python] cx_Freeze를 사용하여 작성한 실행 파일에서 파일 입출력 관리하기

컴퓨터 프로그래밍에서 파일 입출력은 중요한 부분입니다. 이번 글에서는 cx_Freeze 라이브러리를 사용하여 작성한 실행 파일에서 파일 입출력을 어떻게 관리하는지 알아보겠습니다.

1. 파일 입출력을 위한 모듈 불러오기

파일 입출력을 위해 io 모듈을 불러옵니다.

import io

2. 파일 쓰기

파일을 쓰기 위해서는 open 함수를 사용합니다. 다음은 파일을 열어서 데이터를 쓰는 예제입니다.

with io.open("output.txt", mode="w", encoding="utf-8") as file:
    file.write("Hello, world!")

위의 코드는 output.txt라는 파일을 쓰기 모드로 열고, “Hello, world!”라는 문자열을 파일에 씁니다. mode 매개변수에 "w"를 지정하여 쓰기 모드로 파일을 열었습니다.

3. 파일 읽기

파일을 읽기 위해서도 open 함수를 사용합니다. 다음은 파일을 열어서 데이터를 읽는 예제입니다.

with io.open("input.txt", mode="r", encoding="utf-8") as file:
    data = file.read()

print(data)

위의 코드는 input.txt라는 파일을 읽기 모드로 열고, 파일의 내용을 읽어서 data 변수에 저장한 후 출력합니다. mode 매개변수에 "r"을 지정하여 읽기 모드로 파일을 열었습니다.

4. 실행 파일에서 파일 경로 관리하기

cx_Freeze를 사용하여 작성한 실행 파일은 일반적으로 실행 파일이 있는 디렉토리에서 파일을 찾습니다. 따라서 파일 경로를 제대로 관리하기 위해서는 sys 모듈을 사용하여 실행 파일이 위치한 경로를 가져와야 합니다.

import sys
import os

base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
file_path = os.path.join(base_path, "input.txt")

with io.open(file_path, mode="r", encoding="utf-8") as file:
    data = file.read()

print(data)

위의 코드는 sys 모듈의 getattr 함수를 사용하여 실행 파일이 위치한 경로를 가져온 후, os 모듈의 dirname 함수를 사용하여 실행 파일이 위치한 디렉토리 경로를 가져옵니다. 그리고 os.path.join 함수를 사용하여 파일 경로를 생성하고, 이 파일을 읽어서 data 변수에 저장한 후 출력합니다.

5. 결론

이번 글에서는 cx_Freeze를 사용하여 작성한 실행 파일에서 파일 입출력을 관리하는 방법을 알아보았습니다. 파일을 쓰기 위해서는 io 모듈의 open 함수를 사용하고, 파일을 읽기 위해서도 같은 함수를 사용합니다. 또한 실행 파일에서 파일 경로를 제대로 관리하기 위해서는 sys 모듈을 사용하여 실행 파일이 위치한 경로를 가져와야 합니다.

더 자세한 내용은 Python 공식 문서를 참고하시기 바랍니다.