티스토리
현재 디렉토리에 있는 파일 접
Python의 Path 객체를 사용하여 현재 실행 중인 스크립트 파일(__file__)과 동일한 디렉토리에 있는 "abc.csv" 파일의 경로를 생성하는 방법을 보여줍니다. 여기에서 Path는 pathlib 모듈의 일부로, 파일 시스템 경로를 객체 지향적으로 쉽게 다룰 수 있게 해줍니다.
아래 광고 클릭으로 보다 많은 정보를 나눌수 있는 큰힘이 됩니다.~!
1. 코드리뷰
from pathlib import Path
# 현재 스크립트와 같은 디렉토리에 있는 'abc.csv' 파일의 경로 생성
fpath = Path(__file__).parent / "abc.csv"
# 생성된 경로 확인
print(fpath)
코드 분석 아래 클릭 :
Path(__file__): __file__ 전역 변수는 현재 실행 중인 Python 스크립트 파일의 경로를 포함합니다. Path(__file__)를 사용하면 이 경로를 Path 객체로 변환합니다. 이 객체는 파일 시스템 경로를 쉽게 조작할 수 있는 여러 메서드를 제공합니다.
.parent: Path 객체의 parent 속성은 현재 경로의 부모 디렉토리, 즉 현재 파일이 위치한 디렉토리의 경로를 Path 객체로 반환합니다.
/ "abc.csv": Path 객체를 사용할 때, / 연산자를 사용하여 경로를 쉽게 결합할 수 있습니다. 이 경우 "abc.csv" 파일명이 현재 스크립트 파일이 있는 디렉토리의 경로에 추가됩니다.
주의할 점
이 코드는 스크립트 파일 내에서 사용될 때 의도대로 작동합니다. Jupyter Notebook이나 대화형 Python 세션(IPython, Python REPL 등)에서 __file__ 변수는 정의되지 않습니다. 대화형 환경에서는 __file__ 대신 실제 경로 문자열이나 다른 방법을 사용해야 합니다.
파일 경로를 생성하고 나면, 이 경로를 사용해 파일을 읽거나 쓸 수 있습니다. 예를 들어, pandas 라이브러리를 사용하여 CSV 파일을 읽어올 때 fpath를 활용할 수 있습니다.
아래 광고 클릭으로 보다 많은 정보를 나눌수 있는 큰힘이 됩니다.~!
2. 위의 코드를 개선한 예제
여기서는 먼저 파일 경로의 존재 여부를 검증하고, 파일이 존재하지 않을 경우 로깅하는 방법을 추가합니다.
from pathlib import Path
import logging
# 로깅 설정
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
파일 경로 생성 및 검증
try:
# 현재 스크립트와 같은 디렉토리에 있는 'abc.csv' 파일의 경로 생성
fpath = Path(__file__).parent / "abc.csv"
# 파일 경로 검증
if fpath.exists() and fpath.is_file():
# 파일 경로가 유효하면 로깅
logging.info(f"파일 경로 '{fpath}'가 확인되었습니다.")
else:
# 파일이 존재하지 않으면 예외 발생
raise FileNotFoundError(f"파일 '{fpath}'를 찾을 수 없습니다.")
except NameError:
# __file__이 정의되지 않은 경우(대화형 환경 등)
logging.error("__file__ 변수가 정의되지 않았습니다. 스크립트 파일 내에서 이 코드를 실행해야 합니다.")
except FileNotFoundError as e:
# 파일이 존재하지 않는 경우
logging.error(e)
코드 분석 아래 클릭 :
이 코드는 다음 단계를 수행합니다:
로깅 설정: 프로그램의 실행 정보를 로깅하기 위해 logging 모듈을 설정합니다. 이 예제에서는 기본 로깅 레벨을 INFO로 설정하고, 로그 메시지의 형식을 지정합니다.
파일 경로 생성: Path 객체를 사용하여 현재 스크립트 파일이 위치한 디렉토리에 "abc.csv" 파일의 경로를 생성합니다.
예외 처리 추가:
NameError: 대화형 환경에서 __file__이 정의되지 않은 경우를 처리합니다.
FileNotFoundError: 지정된 경로의 파일이 존재하지 않을 경우를 처리합니다. 파일이 존재하지 않으면 예외를 발생시키고, 해당 예외를 캐치하여 로깅합니다.
경로 검증: exists()와 is_file() 메서드를 사용하여 파일 경로가 실제로 존재하는 파일을 가리키는지 확인합니다. 유효한 경우 해당 경로에 대한 정보를 로깅합니다.
이렇게 개선된 코드는 파일 경로의 존재를 검증하고, 예상치 못한 상황(예: 파일 누락, 대화형 환경에서의 사용)에 대해 유용한 로깅 정보를 제공합니다. 이는 디버깅 과정을 효과적으로 지원하고, 코드의 견고성을 높여줍니다.
마무리
- 이번 포스팅은 __file__ 매소드 활용 방법에 대해 알아봤습니다.
궁금한 사항은 lution2@gmail.com로 문의사항 주시면 답변 드리겠습니다.
감사합니다.
'PYTHON 파이썬 > 문법(Syntax)' 카테고리의 다른 글
파이썬/python special method 또는 magic keyword 문법 (__init__).. (1) | 2024.03.22 |
---|---|
[python] dictionary 딕셔너리 (0) | 2024.01.15 |
[Python/파이썬] 리스트/LIST들 중에서 중복된 값 찾기 (0) | 2023.08.05 |
[파이썬초보] python glob 파일(file)처리 (0) | 2023.06.20 |
input() (0) | 2023.06.18 |