안녕하세요. BlockDMask입니다.
오늘은 파이썬에서 현재 파일 디렉터리, 폴더의 위치를 구하는 방법에 대해서 알아보겠습니다.
즉 파일, 폴더의 경로를 파악하는 방법입니다.
<목차>
1. 파이썬의 __file__
2. 파이썬 현재 파일 경로
3. 파이썬 현재 파일의 폴더(디렉터리) 경로
1. 파이썬의 __file__의 의미
파이썬 파일에는 미리 지정해둔 특별한 전역 변수들이 숨어있습니다.
main인지 확인하기 위해서 사용하는 __name__ 같은 것 사용해보셨죠?
이것과 동일하게 특별한 전역 변수인
1-1) 전역 변수 __file__
__file__ 은 현재 열려있는 파일의 위치와 이름을 가지고 있는 문자열 변수입니다.
print(__file__)을 하게 되면 현재 위치 및 파일 이름을 출력할 수 있습니다.
1-2) __file__ 예제
print(f'__file__ : {__file__}')
이렇게 파일 경로와 이름이 쫙 나오는 것을 볼 수 있습니다.
2. 파이썬 현재 파일 경로 구하기 (feat. os 모듈)
__file__ 을 이용해서 경로랑 이름을 구해도 되는데, __file__ 특정 상황이나 환경에 의해서 경로가 나오지 않는 경우도 있습니다.
그럴 경우에는 os 모듈을 이용하시면 됩니다.
1-1) 파일 경로 관련 함수 설명
# 파일의 절대 경로 출력
os.path.abspath(__file__)
path.abspath(파일이름)을 입력하게 되면 현재 파일의 "절대 경로+이름"을 반환해줍니다.
# 파일의 상대 경로 출력
os.path.realpath(__file__)
path.realpath(파일이름)을 입력하게 되면 현재 파일의 "표준 경로+이름"을 반환해줍니다. (심볼릭 링크 포함)
1-2) 파일 경로 관련 함수 예제
import os
# os.path.realpath(__file__)
print(f'os.path.realpath(__file__) : {os.path.realpath(__file__)}')
# os.path.abspath(__file__)
print(f'os.path.abspath(__file__) : {os.path.abspath(__file__)}')
3. 파이썬 현재 폴더(디렉토리) 경로 구하기 (feat. os 모듈)
__file__이나 위에서 배운 path는 경로+파일 까지 구했다면, 이제는 폴더(디렉토리)까지만 구해보겠습니다.
즉, 경로 + 파일에서 경로만 구해오는 것입니다.
3-1) 현재 폴더 경로 구하는 방법 4가지
# 방법 1 - getcwd
os.getcwd()
getcwd 함수는 현재 작업하고 있는 디렉터리를 문자열로 반환하는 함수입니다.
# 방법 2
os.path.dirname(__file__)
# 방법 3
os.path.dirname(os.path.realpath(__file__))
# 방법 4
os.path.dirname(os.path.abspath(__file__))
path.dirname 함수는 매개변수로 전달된 경로의 디렉터리를 문자열로 반환해줍니다.
3-2) 현재 폴더 경로 출력 예제
import os
# os.getcwd()
print(f"os.getcwd() : {os.getcwd()}")
# os.path.dirname(__file__)
print(f'os.path.dirname(__file__) : {os.path.dirname(__file__)}')
# os.path.dirname(os.path.realpath(__file__))
real_path = os.path.realpath(__file__)
print(f'os.path.dirname(real_path) : {os.path.dirname(real_path)}')
# os.path.dirname(os.path.abspath(__file__))
abs_path = os.path.abspath(__file__)
print(f'os.path.dirname(abs_path) : {os.path.dirname(abs_path)}')
이렇게 오늘은 파이썬의 os 모듈을 이용해서 파일, 폴더, 디렉토리의 경로를 구하는 방법에 대해서 알아봤습니다.
감사합니다.
'<개인공부> > [Python]' 카테고리의 다른 글
[python] 파이썬 같지 않다 != 정리 (0) | 2021.11.15 |
---|---|
[python] 파이썬 문자열 뒤집기, 거꾸로 출력 하기 3가지 방법 (0) | 2021.11.10 |
[python] 파이썬 버전 확인 방법 (윈도우, 맥북) (0) | 2021.11.08 |
[python] 파이썬 is와 ==의 차이 (값, 참조) (0) | 2021.11.05 |
[python] 파이썬 얕은복사, 깊은복사 (copy, deepcopy, [:], =) 총 정리 (12) | 2021.10.18 |
[python] 파이썬 mutable, immutable 객체에 관해서 (7) | 2021.10.15 |
[python] 파이썬 issubclass 클래스 포함관계 (0) | 2021.10.14 |
[python] 파이썬 sleep 함수 사용법 (일시정지) (0) | 2021.10.08 |