> 백엔드 개발 > 파이썬 튜토리얼 > Python 프로젝트의 상대 경로로 인해 파일을 찾을 수 없음 오류가 발생하는 이유는 무엇입니까?

Python 프로젝트의 상대 경로로 인해 파일을 찾을 수 없음 오류가 발생하는 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-01 11:39:02
원래의
604명이 탐색했습니다.

Why Do Relative Paths in Python Projects Lead to File Not Found Errors?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿