Python 상대 경로 문제 해결:"No such file or directory"

3994 단어 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"는 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.참고 가 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기