파 이 썬 은 가방 에 있 는 데이터 파일 을 읽 습 니 다.

문제.
가방 에는 코드 가 읽 어야 할 데이터 파일 이 포함 되 어 있 습 니 다.너 는 가능 한 한 가장 편리 한 방식 으로 이 일 을 해 야 한다.
해결 방안
가방 에 있 는 파일 을 다음 과 같이 구성한다 고 가정 하 십시오.
mypackage/
    __init__.py
    somedata.dat
    spam.py
현재 spam.py 파일 이 somedata.dat 파일 의 내용 을 읽 어야 한다 고 가정 합 니 다.다음 코드 로 완성 할 수 있 습 니 다.

# spam.py
import pkgutil
data = pkgutil.get_data(__package__, 'somedata.dat')
이 로 인해 발생 하 는 변 수 는 이 파일 의 원본 내용 을 포함 하 는 바이트 문자열 입 니 다.
토론 하 다.
데이터 파일 을 읽 으 려 면 open()과 같은 내 장 된 I/O 기능 을 사용 하 는 코드 를 만 드 는 경향 이 있 을 수 있 습 니 다.하지만 이런 방법 에 도 문제 가 있다.
우선,하나의 가방 은 해석 기의 현재 작업 디 렉 터 리 에 대해 거의 통제 권 이 없다.따라서 프로 그래 밍 을 할 때 모든 I/O 작업 은 절대 파일 이름 을 사용 해 야 합 니 다.각 모듈 에 완전한 경로 가 있 는 가 포함 되 어 있 기 때 문 입 니 다.file__변 수 는 경로 가 불가능 한 것 은 아니 지만 복잡 하 다 는 것 을 알 수 있 습 니 다.
둘째,가방 은 보통.zip 또는.egg 파일 로 설치 되 어 있 습 니 다.이 파일 들 은 파일 시스템 의 일반 디 렉 터 리 처럼 저장 되 지 않 습 니 다.따라서 데이터 파일 을 포함 하 는 압축 파일 을 open()으로 조작 하려 고 합 니 다.작 동 하지 않 습 니 다.
pkgutil.get_data()함 수 는 데이터 파일 을 읽 는 고급 도구 로 가방 이 어떻게 설치 되 고 설치 되 는 지 상관 하지 않 습 니 다.파일 내용 을 바이트 문자열 로 되 돌려 주 는 작업 일 뿐 입 니 다.
get_data()의 첫 번 째 매개 변 수 는 가방 이름 을 포함 하 는 문자열 입 니 다.가방 이름 을 직접 사용 할 수도 있 고 특별한 변 수 를 사용 할 수도 있 습 니 다.예 를 들 어package__。두 번 째 매개 변 수 는 가방 안의 파일 의 상대 적 인 이름 입 니 다.필요 하 다 면 마지막 디 렉 터 리 가 가방 에 있 는 한 표준 유 닉 스 이름 을 사용 할 수 있 습 니 다.
이상 은 파 이 썬 이 가방 에 있 는 데이터 파일 의 상세 한 내용 을 읽 는 것 입 니 다.파 이 썬 이 데이터 파일 을 읽 는 것 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!

좋은 웹페이지 즐겨찾기