Python Language
ZIP 아카이브 작업
수색…
통사론
- zipfile 가져 오기
- 클래스 zip 파일. ZipFile ( 파일, 모드 = 'r', 압축 = ZIP_STORED, allowZip64 = True )
비고
ZIP 파일이 아닌 파일을 열려고하면 zipfile.BadZipFile
예외가 발생합니다.
Python 2.7에서는 철자가있는 zipfile.BadZipfile
오래된 이름은 Python 3.2 이상에서 새로운 이름과 함께 유지됩니다.
Zip 파일 열기
시작하려면 zipfile
모듈을 가져오고 파일 이름을 설정하십시오.
import zipfile
filename = 'zipfile.zip'
zip 아카이브로 작업하는 것은 파일 작업과 매우 유사하므로 zip 파일 을 열어 오브젝트를 작성하면 파일을 다시 닫기 전에 작업 할 수 있습니다.
zip = zipfile.ZipFile(filename)
print(zip)
# <zipfile.ZipFile object at 0x0000000002E51A90>
zip.close()
Python 2.7과 Python 3에서 3.2 이상인 경우 컨텍스트 관리자 with
사용할 수 있습니다. 파일을 "읽기"모드로 연 다음 파일 이름 목록을 인쇄합니다.
with zipfile.ZipFile(filename, 'r') as z:
print(zip)
# <zipfile.ZipFile object at 0x0000000002E51A90>
Zipfile 내용 검사
zip 파일의 내용을 검사하는 몇 가지 방법이 있습니다. printdir
을 사용하여 다양한 정보를 stdout
보낼 수 있습니다.
with zipfile.ZipFile(filename) as zip:
zip.printdir()
# Out:
# File Name Modified Size
# pyexpat.pyd 2016-06-25 22:13:34 157336
# python.exe 2016-06-25 22:13:34 39576
# python3.dll 2016-06-25 22:13:34 51864
# python35.dll 2016-06-25 22:13:34 3127960
# etc.
namelist
메서드를 사용하여 파일 이름 목록을 가져올 수도 있습니다. 여기에 간단히 목록을 인쇄합니다.
with zipfile.ZipFile(filename) as zip:
print(zip.namelist())
# Out: ['pyexpat.pyd', 'python.exe', 'python3.dll', 'python35.dll', ... etc. ...]
namelist
대신 infolist
메서드를 호출 할 수 있습니다.이 메서드는 각 파일에 대한 추가 정보 (예 : 타임 스탬프 및 파일 크기)가 포함 된 ZipInfo
개체 목록을 반환합니다.
with zipfile.ZipFile(filename) as zip:
info = zip.infolist()
print(zip[0].filename)
print(zip[0].date_time)
print(info[0].file_size)
# Out: pyexpat.pyd
# Out: (2016, 6, 25, 22, 13, 34)
# Out: 157336
zip 파일 내용을 디렉토리로 추출하기
zip 파일의 모든 파일 내용 추출
import zipfile
with zipfile.ZipFile('zipfile.zip','r') as zfile:
zfile.extractall('path')
단일 파일 추출 방법으로 추출 방법을 사용하려면 이름 목록과 경로를 입력 매개 변수로 사용합니다.
import zipfile
f=open('zipfile.zip','rb')
zfile=zipfile.ZipFile(f)
for cont in zfile.namelist():
zfile.extract(cont,path)
새 아카이브 만들기
쓰기 모드로 새로운 아카이브 열기 zip 파일을 만들려면.
import zipfile
new_arch=zipfile.ZipFile("filename.zip",mode="w")
이 아카이브에 파일을 추가하려면 write () 메소드를 사용하십시오.
new_arch.write('filename.txt','filename_in_archive.txt') #first parameter is filename and second parameter is filename in archive by default filename will taken if not provided
new_arch.close()
아카이브에 바이트 문자열을 쓰려면 writestr () 메소드를 사용할 수 있습니다.
str_bytes="string buffer"
new_arch.writestr('filename_string_in_archive.txt',str_bytes)
new_arch.close()