<개인공부>/[Python]

[python] 현재 파일 디렉토리(폴더) 위치 구하기

사용자 BlockDMask 2021. 10. 21. 21:00
반응형

안녕하세요. BlockDMask입니다.
오늘은 파이썬에서 현재 파일 디렉터리, 폴더의 위치를 구하는 방법에 대해서 알아보겠습니다.
즉 파일, 폴더의 경로를 파악하는 방법입니다.

<목차>
1. 파이썬의 __file__
2. 파이썬 현재 파일 경로
3. 파이썬 현재 파일의 폴더(디렉터리) 경로

 

1. 파이썬의 __file__의 의미


파이썬 파일에는 미리 지정해둔 특별한 전역 변수들이 숨어있습니다.
main인지 확인하기 위해서 사용하는 __name__ 같은 것 사용해보셨죠?

이것과 동일하게 특별한 전역 변수인

1-1) 전역 변수 __file__

__file__ 은 현재 열려있는 파일의 위치와 이름을 가지고 있는 문자열 변수입니다.

print(__file__)을 하게 되면 현재 위치 및 파일 이름을 출력할 수 있습니다. 

 

1-2) __file__ 예제

print(f'__file__ : {__file__}')

python __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__)}')

python os.path.

 

 

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)}')

python dir path

 

이렇게 오늘은 파이썬의 os 모듈을 이용해서 파일, 폴더, 디렉토리의 경로를 구하는 방법에 대해서 알아봤습니다.
감사합니다.

반응형