Python 상대 경로 문제 해결:"No such file or directory"
python 의 상대 경로 때문에 상대 적 으로 주 파일 입 니 다.
다음 디 렉 터 리 구조:
| -- main.py
| -- conf.py
| -- start.png
| -- config.txt
main.py 는 주 파일 입 니 다.config.py 에서 config.txt 를 참조 하여 상대 경 로 를 사용 합 니 다.
만약...또는...상대 적 으로 main.py 를 사용한다 면,"/config.txt"를 사용 하 십시오.main.py 와 같은 디 렉 터 리 아래 에 있 습 니 다.
현재 파일 이 있 는 폴 더 를 말 합 니 다.현재 파일 의 이전 디 렉 터 리 를 말 합 니 다.
추가 지식:python 모듈 호출 시 코드 에서 상대 경 로 를 사용 하여 접근 하 는 파일 을 해결 하고 파일 에 존재 하지 않 는 문 제 를 알려 줍 니 다.
문제 분석:
인 코딩 과정 에서 상대 적 인 경 로 를 사용 하여 코드 의 안정성 을 향상 시 킵 니 다.프로젝트 디 렉 터 리 가 변경 되 더 라 도 파일 의 상대 적 인 경로 가 변 하지 않 으 면 코드 는 안정 적 으로 실 행 될 수 있 습 니 다.그러나 python 코드 에서 상대 경 로 를 사용 할 때 다음 과 같은 문제 가 존재 합 니 다.예제 코드 구 조 는 다음 과 같 습 니 다.
그 중 test 패키지 에는 두 개의 파일 first.py 와 user 가 포함 되 어 있 습 니 다.info.txt,first.py 코드 에는 함수 read 만 있 습 니 다.file,user 읽 기 에 사용info.txt 파일 의 첫 줄 내용 을 인쇄 하고 결 과 를 인쇄 합 니 다.파일 을 읽 을 때 상대 경 로 를 사용 합 니 다.코드 는 다음 과 같 습 니 다.
import os
print(" -> %s" %os.getcwd())
def read_file() :
with open("user_info.txt" , encoding = 'utf-8') as f_obj :
content = f_obj.readline()
print(" -> %s" %content)
if __name__ == '__main__' :
read_file()
first.py 프로그램 코드 실행 결 과 는 다음 과 같 습 니 다.현재 경로->E:\프로그램\python 코드\Python DataAnalysis\\데모\\테스트
파일 내용->hello python!!!
test 와 같은 디 렉 터 리 에 second.py 파일 이 존재 합 니 다.이 파일 에서 first.py 파일 의 read 를 호출 합 니 다.file 방법 읽 기 userinfo.txt 파일,코드 는 다음 과 같 습 니 다.
from test import first
first.read_file()
second.py 프로그램 실행 결 과 는 다음 과 같 습 니 다.
현재 경로->E:\프로그램\python 코드\Python DataAnalysis\\데모
파일"E:/프로그램/python 코드/pythonDataAnalysis/Demo/second.py",line 8,in
first.read_file()
File"E:\\Program\\python code\\Python DataAnalysis\\Demo\\test\\first.py",line 10,in readfile
with open("user_info.txt" , encoding = 'utf-8') as f_obj :
FileNotFoundError: [Errno 2] No such fileor directory: 'user_info.txt'
이상 정보 알림 userinfo.txt 파일 이 존재 하지 않 습 니 다.os.getcwd()함수 출력 의 현재 경 로 를 보면 현재 경 로 는 xxx/demo 입 니 다.지난번 에 first.py 파일 을 단독으로 실 행 했 을 때의 XXX/demo/test 가 아 닙 니 다.그래서 프로그램 오류 파일 이 존재 하지 않 는 근본 적 인 원인 은 현재 경로 가 바 뀌 었 기 때문에 코드 의 상대 경로 로 구 성 된 절대적 인 경로 가 바 뀌 었 습 니 다.
해결 방법:
이러한 문제 에 대해 서 는 상대 적 인 경 로 를 사용 하여 파일 에 접근 하 는 모듈 에 다음 코드 를 추가 하면 됩 니 다(굵 은 내용 추가).수 정 된 first.py 코드 는 다음 과 같 습 니 다.
import os
print(" -> %s" %os.getcwd())
current_path = os.path.dirname(__file__)
def read_file() :
with open(current_path + "/user_info.txt" , encoding = 'utf-8') as f_obj :
content = f_obj.readline()
print(" -> %s" %content)
if __name__ == '__main__' :
read_file()
first.py 프로그램 실행 결 과 는 다음 과 같 습 니 다.현재 경로->E:\프로그램\python 코드\Python DataAnalysis\\데모\\테스트
current_path->E:/프로그램/python 코드/pythonDataAnalysis/Demo/test
파일 내용->hello python!!!
second.py 코드 가 변 하지 않 습 니 다.second.py 코드 의 실행 결 과 는 다음 과 같 습 니 다.
현재 경로->E:\프로그램\python 코드\Python DataAnalysis\\데모
current_path->E:\\프로그램\python 코드\Python DataAnalysis\\데모\\테스트
파일 내용->hello python!!!
이상 의 실행 결 과 를 통 해 알 수 있 듯 이 first.py 와 second.py 코드 가 실 행 될 때 os.getcwd()함수 의 출력 결 과 는 일치 하지 않 지만 currentpath = os.path.dirname(__file__)
코드 획득 currentpath 경 로 는 같 습 니 다.currentpath 는 first.py 파일 이 있 는 경로 입 니 다.그리고 currentpath 와 userinfo.txt 로 구 성 된 파일 의 절대 경 로 는 고정 되 어 있 습 니 다.모듈 가 져 올 때 모듈 에서 상대 경 로 를 사용 하여 접근 하 는 파일 이 잘못 되 지 않도록 확보 할 수 있 습 니 다.
이 파 이 썬 은 상대 적 인 경로 문 제 를 해결 합 니 다."No such file or directory"는 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.참고 가 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.