GIL's LAB

모듈에서 파일 불러오기: pkg_resources.resource_filename 본문

파이썬/파이썬 활용 팁

모듈에서 파일 불러오기: pkg_resources.resource_filename

GIL~ 2021. 12. 16. 14:15

안녕하세요. 이번 포스팅에서는 파이썬 모듈에서 파일을 불러오는 방법을 알아보겠습니다. 

많은 방법을 구글링했지만, 제가 성공한 방법만 소개하겠습니다.

 

 

문제 상황

문제는 모듈에서 파일을 불러와서 어떤 처리를 해야하는 상황이었습니다. 즉, 아래와 같은 폴더 구조가 있다고 하겠습니다.

 

My_package    
--------------------- My_Module.py  
--------------------- Data_Folder  
  --------------------- Data.txt

 

여기서 My_Module.py에서 Data_Folder에 있는 Data.txt를 불러오는 것이 목적이었습니다.

 

첫 시도: 상대 경로 활용

My_Module.py의 상위 경로인 My_package에 접근하면 될 것이라는 단순한 생각으로 다음과 같이 path를 정의했습니다.

path = "../Data_Folder/Data.txt"
f = open(path)

그런데 해당 경로에 파일이 없다고 오류가 나왔습니다. 그래서 os.getcwd() 함수를 사용해서 경로를 확인해보니, 파이썬 메인 코드가 실행 중인 경로만 나와서 멘붕... & 구글링 시작

 

 

찾은 방법: pkg_resources.resource_filename

데이터를 패키지화해서 직접 오픈하는 방법도 있었는데, 파일의 경로를 찾는 방법을 사용했습니다.

그 방법은 아래와 같이 pkg_resources.resource_filename 함수에, 모듈 위치를 기준으로 상대 경로를 입력해서 실제 경로를 찾는 것입니다. 

from pkg_resources import resource_filename
file_path = resource_filename("../Data_Folder/Data.txt")
file = open(file_path)

즉, 위 코드는 My_Module.py에 포함됩니다.

 

Comments