python 3 에서 zipfile 모듈 용법 을 자세히 설명 합 니 다.

6211 단어 python3zipfile
1.zipfile 모듈 에 대한 약술
zipfile 은 python 에서 zip 형식 인 코딩 의 압축 과 압축 을 푸 는 데 사 용 됩 니 다.흔히 볼 수 있 는 zip 형식 이기 때문에 이 모듈 의 사용 빈도 도 비교적 높 습 니 다.
여기 서 zipfile 의 사용 방법 을 기록 합 니 다.자신 도 편리 하고 남 도 편리 하 다.
zipfile 에는 두 개의 매우 자주 사용 하 는 class 가 있 는데 그것 이 바로 ZipFile 과 ZipInfo 입 니 다.절대 다수의 상황 에서 우 리 는 이 두 개의 class 만 사용 하면 됩 니 다.
ZipFile 은 zip 파일 을 만 들 고 읽 는 데 사용 되 는 주요 클래스 이 며,ZipInfo 는 zip 파일 의 모든 파일 의 정 보 를 저장 합 니 다.
다음은 이 두 가지 기본 적 인 조작 을 소개 하 겠 습 니 다.
2.ZipFile 과 Zipinfo 두 가지 기본 동작
1、class zipfile.ZipFile(file[, mode[, compression[, allowZip64]]])
zip 파일 을 표시 하 는 ZipFile 대상 을 만 듭 니 다.매개 변수 file 은 파일 의 경로 나 클래스 파일 대상(file-like object)을 표시 합 니 다.파라미터 mode 는 zip 파일 을 여 는 모드 를 표시 합 니 다.
기본 값 은'r'입 니 다.존재 하 는 zip 파일 을 읽 거나'w'또는'a'일 수도 있 습 니 다.'w'는 zip 문 서 를 새로 만 들 거나 존재 하 는 zip 문 서 를 덮어 쓰 는 것 을 표시 합 니 다.

import zipfile
f = zipfile.ZipFile(filename, 'r') #          r     zip  ,w a     zip  

for f_name in f.namelist(): #z.namelist()                。
 print(f_name)
#          zip           。
'a'는 기 존 zip 문서 에 데 이 터 를 추가 하 는 것 을 표시 합 니 다.파라미터 compression 은 zip 문 서 를 쓸 때 사용 하 는 압축 방법 을 표시 합 니 다.값 은 zip 파일 일 수 있 습 니 다.ZIPSTORED 또는 zipfile.ZIPDEFLATED。zip 파일 크기 가 2G 이상 이면 allowZip 64 를 True 로 설정 해 야 합 니 다.
ZipFile 은 다음 과 같은 일반적인 방법 과 속성 을 제공 합 니 다.
ZipFile.getinfo(name)
zip 문서 에서 지정 한 파일 의 정 보 를 가 져 옵 니 다.파일 에 대한 자세 한 정 보 를 포함 하여 zipfile.ZipInfo 대상 을 되 돌려 줍 니 다.
ZipFile.infolist()
zip 문서 에 있 는 모든 파일 의 정 보 를 가 져 와 zipfile.ZipInfo 의 목록 을 되 돌려 줍 니 다.
ZipFile.namelist()
zip 문서 의 모든 파일 이름 목록 을 가 져 옵 니 다.
ZipFile.extract(member[, path[, pwd]])
zip 문서 의 지정 한 파일 을 현재 디 렉 터 리 로 압축 해제 합 니 다.파라미터 member 는 압축 을 풀 파일 이름 이나 대응 하 는 ZipInfo 대상 을 지정 합 니 다.매개 변수 path 는 파일 을 분석 하여 저장 할 폴 더 를 지정 합 니 다.
인자 pwd 는 압축 해제 암호 입 니 다.다음 예 는 프로그램 루트 디 렉 터 리 에 저 장 된 duoduo.zip 의 모든 파일 을 D:/Work 디 렉 터 리 로 압축 해제 합 니 다.

import zipfile, os
f = zipfile.ZipFile(os.path.join(os.getcwd(), 'duoduo.zip')) #       
for file in f.namelist():
  f.extract(file, r'd:/Work')  # d:/Work     
f.close()

위 는 os.getcwd 의 용법!!
ZipFile.extractall([path[, members[, pwd]]])
zip 문서 의 모든 파일 을 현재 디 렉 터 리 로 압축 해제 합 니 다.인자 members 의 기본 값 은 zip 문서 에 있 는 모든 파일 이름 목록 이 며,압축 을 풀 파일 이름 을 선택 할 수도 있 습 니 다.
ZipFile.printdir()
zip 문서 의 정 보 를 콘 솔 에 인쇄 합 니 다.
ZipFile.setpassword(pwd)
zip 문서 의 암 호 를 설정 합 니 다.
ZipFile.read(name[, pwd])
zip 문서 에서 지정 한 파일 의 바 이 너 리 데 이 터 를 가 져 옵 니 다.다음 예 는 read()의 사용 을 보 여 줍 니 다.zip 문서 에는 duoduo.txt 의 텍스트 파일 이 포함 되 어 있 습 니 다.read()방법 으로 바 이 너 리 데 이 터 를 읽 고 D:/duoduo.txt 에 저장 합 니 다.

import zipfile, os
zipFile = zipfile.ZipFile(os.path.join(os.getcwd(), 'duoduo.zip'))
data = zipFile.read('duoduo.txt')
# (lambda f, d: (f.write(d), f.close()))(open(r'd:/duoduo.txt', 'wb'), data) #             。     ~_~
with open(r'd:/duoduo.txt','wb') as f:
 for d in data:
  f.write(d)
zipFile.close()
ZipFile.write(filename[, arcname[, compress_type]])
지정 한 파일 을 zip 문서 에 추가 합 니 다.filename 은 파일 경로 이 고,arcname 은 zip 문서 에 추 가 된 후 저 장 된 이름 입 니 다.인자 copresstype 은 압축 방법 을 표시 합 니 다.값 은 zip 파일 일 수 있 습 니 다.ZIPSTORED 또는 zipfile.ZIPDEFLATED。다음 예 는 zip 문 서 를 만 드 는 방법 을 보 여 주 며 파일 D:/test.doc 를 압축 문서 에 추가 하 는 방법 을 보 여 줍 니 다.

import zipfile, os
zipFile = zipfile.ZipFile(r'D:/test.zip'), 'w')
zipFile.write(r'D:/test.doc', '     ', zipfile.ZIP_DEFLATED)
zipFile.close()
ZipFile.writestr(zinfo_or_arcname, bytes)
writestr()는 압축 문서 에 바 이 너 리 데 이 터 를 직접 기록 하 는 것 을 지원 합 니 다.
2、Class ZipInfo
ZipFile.getinfo(name)방법 은 zip 문서 에 해당 하 는 파일 의 정 보 를 나타 내 는 ZipInfo 대상 을 되 돌려 줍 니 다.다음 속성 을 지원 합 니 다:
ZipInfo.filename:파일 이름 가 져 오기.
ZipInfo.date_time:파일 을 가 져 오 는 마지막 수정 시간 입 니 다.6 개의 요 소 를 포함 하 는 원 조 를 되 돌려 줍 니 다:(년,월,일,시,분,초)
ZipInfo.compress_type:압축 형식.
ZipInfo.com:문서 설명.
ZipInfo.extr:확장 항목 데이터.
ZipInfo.create_system:이 zip 문 서 를 만 드 는 시스템 을 가 져 옵 니 다.
ZipInfo.create_version:zip 문 서 를 만 드 는 PKZIP 버 전 을 가 져 옵 니 다.
ZipInfo.extract_version:압축 풀기 문서 에 필요 한 PKZIP 버 전 을 가 져 옵 니 다.
ZipInfo.reserved:예약 필드,현재 구현 은 항상 0 으로 돌아 갑 니 다.
ZipInfo.flag_bits:zip 표지 위치.
ZipInfo.volume:파일 헤더 의 볼 륨 입 니 다.
ZipInfo.internal_attr:내부 속성.
ZipInfo.external_attr:외부 속성.
ZipInfo.header_offset:파일 헤더 가 옆으로 이동 합 니 다.
ZipInfo.CRC:압축 되 지 않 은 파일 의 CRC-32.
ZipInfo.compress_size:압축 된 크기 를 가 져 옵 니 다.
ZipInfo.file_size:압축 되 지 않 은 파일 크기 를 가 져 옵 니 다.
다음 간단 한 예 는 이러한 속성의 뜻 을 설명 한다.

import zipfile, os
zipFile = zipfile.ZipFile(os.path.join(os.getcwd(), 'duoduo.zip'))
zipInfo = zipFile.getinfo('      .txt')
print ('filename:', zipInfo.filename) #      
print ('date_time:', zipInfo.date_time) #          。      6      :( ,  ,  ,  ,  ,  )
print ('compress_type:', zipInfo.compress_type) #    
print ('comment:', zipInfo.comment) #    
print ('extra:', zipInfo.extra) #     
print ('create_system:', zipInfo.create_system) #     zip     。
print ('create_version:', zipInfo.create_version) #     zip   PKZIP  。
print ('extract_version:', zipInfo.extract_version) #     zip     PKZIP  。
print ('extract_version:', zipInfo.reserved) #     ,        0。
print ('flag_bits:', zipInfo.flag_bits) #zip   。
print ('volume:', zipInfo.volume) #       。
print ('internal_attr:', zipInfo.internal_attr) #    。
print ('external_attr:', zipInfo.external_attr) #    。
print ('header_offset:', zipInfo.header_offset) #       。
print ('CRC:', zipInfo.CRC) #       CRC-32。
print ('compress_size:', zipInfo.compress_size) #        。
print ('file_size:', zipInfo.file_size) #          。
zipFile.close() #

좋은 웹페이지 즐겨찾기