Python 모듈 zipfile 원리 및 사용 방법 상세 설명
zipfile 에는 두 개의 매우 중요 한 class 가 있 는데 그것 이 바로 ZipFile 과 ZipInfo 입 니 다.절대 다수의 상황 에서 우 리 는 이 두 개의 class 만 사용 하면 됩 니 다.
Zip File 은 zip 파일 을 만 들 고 읽 는 주요 클래스 입 니 다.
ZipInfo 는 zip 파일 의 모든 파일 의 정 보 를 저장 합 니 다.
예 를 들 어 zipfile 을 읽 으 려 면 filename 이 파일 의 경로 라 고 가정 합 니 다.
import zipfile
z = zipfile.ZipFile(filename, 'r') # r zip ,w zip
for f in z.namelist():
print f
위의 코드 는 zip 압축 패키지 의 모든 파일 이름 을 읽 는 것 입 니 다.z.namelist()는 압축 패키지 에 있 는 모든 파일 이름 의 목록 을 되 돌려 줍 니 다.다음 것 을 보 세 요.
import zipfile
z = zipfile.ZipFile(filename, 'r')
for i in z.infolist():
print i.file_size, i.header_offset
z.infolist()를 사 용 했 습 니 다.압축 된 가방 에 있 는 모든 파일 의 정 보 를 되 돌려 주 는 것 이 ZipInfo 의 목록 입 니 다.ZopInfo 대상 에는 압축 패키지 에 있 는 파일 에 대한 정보 가 포함 되 어 있 습 니 다.그 중에서 자주 사용 되 는 것 은 filename,file 입 니 다.size, header_offset,각각 파일 이름,파일 크기,파일 데이터 가 압축 패키지 에서 의 오프셋 입 니 다.사실 이전의 z.namelist()는 읽 은 ZopInfo 의 filename 으로 list 를 구성 하여 되 돌려 줍 니 다.압축 파일 에서 파일 을 압축 해제 하 는 방법 은 ZipFile 의 read 방법 을 사용 하 는 것 입 니 다.
import zipfile
z = zipfile.ZipFile(filename, 'r')
print z.read(z.namelist()[0])
이렇게 하면 z.namelist()의 첫 번 째 파일 을 읽 고 화면 에 출력 합 니 다.물론 파일 에 저장 할 수도 있 습 니 다.다음은 zip 압축 패 키 지 를 만 드 는 방법 입 니 다.
읽 는 방법 과 유사 합 니 다:
import zipfile, os
z = zipfile.ZipFile(filename, 'w') # w, filename
# testdir ( ):
if os.path.isdir(testdir):
for d in os.listdir(testdir):
z.write(testdir+os.sep+d)
# close() !
z.close()
위의 코드 는 매우 간단 하 다.또 하나의 문 제 를 생각해 보 세 요.만약 에 제 가 test/111.txt 를 압축 가방 에 추가 한 후에 가방 에 test 22/111.txt 를 넣 으 면 어 떡 하 죠?
사실 이것 이 바로 ZipFile 의 write 방법 에서 두 번 째 매개 변수의 역할 입 니 다.이렇게 호출 하기 만 하면 됩 니 다:z.write("test/111.txt","test 22/111.txt")
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.