Python 프로젝트에서 상대 경로를 사용하여 파일에 액세스
Python 프로젝트 내에서 파일을 조작할 때 편의를 위해 상대 경로가 사용되는 경우가 많습니다. 그러나 특히 다단계 프로젝트 구조를 처리할 때 동작이 모호해질 수 있습니다.
다음 프로젝트 레이아웃을 고려하세요.
project /data test.csv /package __init__.py module.py main.py
모듈 module.py가 . ./data/test.csv를 상대 경로로 사용하고 있지만 main.py를 실행하면 파일을 찾을 수 없다는 오류가 발생합니다. 이러한 명백한 불일치는 스크립트가 실행되는 위치에 따라 상대 경로가 다르게 해결된다는 사실에서 비롯됩니다.
__init__.py 및 module.py의 경우 경로는 이를 포함하는 디렉터리를 기준으로 평가됩니다. 파일. 그러나 main.py의 경우 경로는 자체 위치에 상대적입니다.
경로 모호성 해결
이 모호성을 해결하려면 절대 경로를 사용할 수 있습니다. 또는 더 우아한 접근 방식은 Python의 __file__ 속성을 활용하는 것입니다.
<code class="python">from pathlib import Path path = Path(__file__).parent / "../data/test.csv" with path.open() as f: test = list(csv.reader(f))</code>
이 트릭은 Python의 3.4 pathlib 모듈을 사용하고 현재 스크립트 위치를 기반으로 절대 경로를 구성합니다.
이전 Python 버전 지원
3.4 이하의 Python 버전을 아직 사용 중인 경우 대체 방법은 현재 경로를 조작하는 것입니다.
<code class="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))</code>
이 접근 방식은 os.path 함수를 결합하여 pathlib 기반 방법과 동일한 결과를 얻습니다.
위 내용은 Python 프로젝트의 상대 경로로 인해 파일을 찾을 수 없음 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!