Python에서 현재 파일 디렉토리 전체 경로 가져오기: 완벽 가이드
Python에서 현재 파일의 디렉토리 전체 경로 가져오기
Python에서 현재 실행되는 스크립트의 디렉토리 전체 경로를 가져오는 방법은 여러 가지가 있습니다. 가장 일반적으로 사용되는 두 가지 방법을 살펴보겠습니다.
os.path.dirname() 사용하기:
import os
# 현재 파일의 전체 경로를 가져옵니다.
current_file_path = os.path.abspath(__file__)
# 현재 파일의 디렉토리 전체 경로를 추출합니다.
current_dir_path = os.path.dirname(current_file_path)
print(current_dir_path)
pathlib 모듈 사용하기:
from pathlib import Path
# 현재 파일의 Path 객체를 생성합니다.
current_file = Path(__file__)
# 현재 파일의 디렉토리 Path 객체를 가져옵니다.
current_dir = current_file.parent
# 현재 디렉토리의 전체 경로를 문자열로 변환합니다.
current_dir_path = str(current_dir)
print(current_dir_path)
설명:
os.path.abspath(__file__)
: 현재 실행되는 스크립트의 절대 경로를 가져옵니다.__file__
은 특수 변수로서, 현재 스크립트의 파일 이름을 문자열로 저장합니다.os.path.abspath()
함수는 주어진 경로를 절대 경로로 변환합니다.os.path.dirname()
: 주어진 경로의 디렉토리 부분을 추출합니다.Pathlib
: Python 3.4에서 도입된 표준 라이브러리 모듈입니다. 파일 시스템 객체를 다루는 데 더 객체 지향적이고 직관적인 인터페이스를 제공합니다.Path.parent
: 현재 Path 객체의 부모 디렉토리에 대한 Path 객체를 반환합니다.str()
: Path 객체를 문자열 표현으로 변환합니다.
주의 사항:
- 위 코드는 현재 실행되는 스크립트의 작업 디렉토리가 스크립트 파일이 있는 디렉토리와 동일하다는 것을 가정합니다. 작업 디렉토리가 다르면
os.getcwd()
함수를 사용하여 현재 작업 디렉토리의 경로를 가져온 후 해당 경로를 기반으로 디렉토리 경로를 계산해야 합니다.
참고:
- 다른 방법으로는
inspect
모듈을 사용하여 현재 스크립트의 파일 이름을 가져온 다음,os.path.join()
함수를 사용하여 파일 이름과 디렉토리 경로를 결합하는 방법도 있습니다. - 더 복잡한 상황에서는
os.path.realpath()
또는os.path.normpath()
와 같은 다른os.path
함수를 사용해야 할 수도 있습니다.
예제 코드: Python에서 현재 파일의 디렉토리 전체 경로 가져오기
다음은 os.path.dirname()
및 pathlib
모듈을 사용하여 현재 파일의 디렉토리 전체 경로를 가져오는 예제 코드입니다.
os.path.dirname() 사용
import os
# 현재 파일의 전체 경로를 가져옵니다.
current_file_path = os.path.abspath(__file__)
# 현재 파일의 디렉토리 전체 경로를 추출합니다.
current_dir_path = os.path.dirname(current_file_path)
print(f"현재 디렉토리 경로: {current_dir_path}")
pathlib 모듈 사용
from pathlib import Path
# 현재 파일의 Path 객체를 생성합니다.
current_file = Path(__file__)
# 현재 파일의 디렉토리 Path 객체를 가져옵니다.
current_dir = current_file.parent
# 현재 디렉토리의 전체 경로를 문자열로 변환합니다.
current_dir_path = str(current_dir)
print(f"현재 디렉토리 경로: {current_dir_path}")
설명:
- 두 코드 모두 동일한 결과를 출력합니다.
os.path.dirname()
함수는 간결하지만,pathlib
모듈은 더 명확하고 객체 지향적인 방식으로 디렉토리 경로를 조작할 수 있도록 합니다.
사용 방법:
- 위 코드를 원하는 파일에 복사하여 붙여 넣습니다.
- 코드를 실행하면 현재 파일의 디렉토리 전체 경로가 콘솔에 출력됩니다.
참고:
- 코드를 실행하기 전에 Python이 설치되어 PATH 환경 변수에 설정되어 있는지 확인하십시오.
__file__
변수는 현재 실행되는 스크립트의 파일 이름을 문자열로 저장합니다.os.path.abspath()
함수는 주어진 경로를 절대 경로로 변환합니다.os.path.dirname()
함수는 주어진 경로의 디렉토리 부분을 추출합니다.Path
객체는 파일 시스템 객체를 나타냅니다.Path.parent
속성은 현재 Path 객체의 부모 디렉토리에 대한 Path 객체를 반환합니다.str()
함수는 Path 객체를 문자열 표현으로 변환합니다.
Python에서 현재 파일의 디렉토리 전체 경로를 가져오는 대체 방법
앞서 언급한 os.path.dirname()
및 pathlib
모듈 외에도 Python에서 현재 파일의 디렉토리 전체 경로를 가져오는 몇 가지 대체 방법이 있습니다.
inspect 모듈 사용:
import inspect
# 현재 스크립트의 파일 프레임을 가져옵니다.
current_frame = inspect.stack()[0][0]
# 현재 스크립트의 파일 이름을 가져옵니다.
current_file_name = current_frame.f_code.co_filename
# 현재 파일의 디렉토리 경로를 가져옵니다.
current_dir_path = os.path.dirname(current_file_name)
print(f"현재 디렉토리 경로: {current_dir_path}")
sys 모듈 사용:
import sys
# 현재 실행되는 스크립트의 경로를 가져옵니다.
current_file_path = sys.argv[0]
# 현재 파일의 디렉토리 전체 경로를 추출합니다.
current_dir_path = os.path.dirname(current_file_path)
print(f"현재 디렉토리 경로: {current_dir_path}")
직접 문자열 연결 사용:
# 현재 파일의 이름을 가져옵니다.
current_file_name = __file__
# 현재 파일의 디렉토리 경로를 추출합니다.
# (주의: 이 방법은 현재 실행되는 스크립트가 같은 디렉토리에 있어야 합니다.)
current_dir_path = os.path.dirname(current_file_name)
print(f"현재 디렉토리 경로: {current_dir_path}")
설명:
inspect
모듈:inspect.stack()
함수를 사용하여 현재 실행 스택 프레임의 정보를 가져온 다음,f_code.co_filename
속성을 사용하여 현재 스크립트의 파일 이름을 추출합니다.sys
모듈:sys.argv[0]
변수는 명령줄 인수의 첫 번째 요소로, 현재 실행되는 스크립트의 경로를 나타냅니다.- 직접 문자열 연결:
__file__
변수는 현재 실행되는 스크립트의 파일 이름을 문자열로 저장합니다. 이를 직접 경로 문자열에 연결하여 현재 디렉토리 경로를 만들 수 있습니다.
주의 사항:
inspect
모듈을 사용하는 방법은 현재 실행 스택 프레임에 대한 정보가 있는 경우에만 유용합니다.sys
모듈을 사용하는 방법은 명령줄 인수가 올바르게 설정되어 있는 경우에만 사용할 수 있습니다.- 직접 문자열 연결을 사용하는 방법은 현재 실행되는 스크립트가 작업 디렉토리와 동일한 디렉토리에 있는 경우에만 유효합니다.
참고:
- 위의 방법 외에도
os.getcwd()
함수를 사용하여 현재 작업 디렉토리의 경로를 가져온 후 해당 경로를 기반으로 디렉토리 경로를 계산하는 방법도 있습니다. - 더 복잡한 상황에서는
os.path.realpath()
또는os.path.normpath()
와 같은 다른os.path
함수를 사용해야 할 수도 있습니다.
python directory