현재 실행 중인 Python 스크립트와 동일한 디렉토리에 있는 파일을 여는 가장 안정적이고 신뢰할 수 있는 방법은 sys.path[0]를 사용하는 것입니다. sys.path[0]는 현재 실행 중인 스크립트가 위치한 디렉토리의 절대 경로를 담고 있기 때문에, 작업 디렉토리(working directory)가 어디로 변경되더라도 항상 올바른 위치에서 파일을 찾을 수 있습니다.
sys.path[0] 사용 예시
예를 들어, 실행 중인 스크립트와 같은 폴더에 my_file.txt라는 파일이 있다면 다음과 같이 열 수 있습니다.
import os
import sys
with open(os.path.join(sys.path[0], "my_file.txt"), "r") as f:
print(f.read())파일이 스크립트와 동일한 디렉토리에 존재한다면, 위 코드는 해당 파일을 성공적으로 열고 전체 내용을 출력합니다. os.path.join()을 사용하면 운영체제별로 다른 경로 구분자(Windows의 \, macOS·Linux의 /)를 자동으로 처리해 주므로 어떤 환경에서도 안전하게 동작합니다.
pathlib를 활용한 더 현대적인 방법
Python 3.4 이상에서는 객체 지향 방식의 pathlib 모듈을 사용하는 것이 더 깔끔하고 가독성이 좋습니다. __file__ 변수로 스크립트 자신의 경로를 얻은 뒤 부모 디렉토리를 지정하는 방식입니다.
from pathlib import Path
script_dir = Path(__file__).resolve().parent
file_path = script_dir / "my_file.txt"
with open(file_path, "r", encoding="utf-8") as f:
print(f.read())정리
두 방법 모두 스크립트 기준의 절대 경로를 만들어 주기 때문에, 프로그램을 어느 위치에서 실행하든 파일 경로 오류 없이 안정적으로 파일을 열 수 있습니다. 간단한 스크립트라면 sys.path[0] 방식을, 유지보수성과 가독성을 중시한다면 pathlib 방식을 선택하는 것을 추천합니다.