Python 프로젝트에서 상대 경로를 사용하여 파일에 액세스
Python 프로젝트 내에서 파일을 조작할 때 편의를 위해 상대 경로가 사용되는 경우가 많습니다. 그러나 특히 다단계 프로젝트 구조를 처리할 때 동작이 모호해질 수 있습니다.
다음 프로젝트 레이아웃을 고려하세요.
project /data test.csv /package __init__.py module.py main.py
Module module.py는 상대 경로를 사용하여 ../data/test.csv의 파일을 읽으려고 시도하지만 main.py를 실행하면 파일을 찾을 수 없다는 오류가 발생합니다. 이러한 명백한 불일치는 스크립트가 실행되는 위치에 따라 상대 경로가 다르게 해결된다는 사실에서 비롯됩니다.
__init__.py 및 module.py의 경우 경로는 이를 포함하는 디렉터리를 기준으로 평가됩니다. 파일. 그러나 main.py의 경우 경로는 자체 위치를 기준으로 합니다.
경로 모호성 해결
이 모호성을 해결하려면 절대 경로를 사용할 수 있습니다. 또는 더 우아한 접근 방식은 Python의 __file__ 속성을 활용하는 것입니다:
from pathlib import Path
path = Path(__file__).parent / "../data/test.csv"
with path.open() as f:
test = list(csv.reader(f))
이 트릭은 Python의 3.4 pathlib 모듈을 사용하고 현재 스크립트 위치를 기반으로 절대 경로를 구성합니다.
이전 Python 버전 지원
3.4 이하의 Python 버전을 아직 사용 중인 경우 대체 방법은 현재 경로를 조작하는 것입니다.
import csv
import os.path
my_path = os.path.abspath(os.path.dirname(__file__))
path = os.path.join(my_path, "../data/test.csv")
with open(path) as f:
test = list(csv.reader(f))
이 접근 방식은 os.path 함수를 결합하여 pathlib 기반 방법과 동일한 결과를 얻습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3