Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 zip 파일 작업

<시간/>

파이썬의 표준 라이브러리에는 zipfile이라는 모듈이 있습니다. 이 모듈을 사용하여 zip 파일에 대해 다른 작업을 수행할 수 있습니다.

Zip 파일은 아카이브 파일 형식입니다. Zip 파일은 손실이 적은 데이터 압축 기능을 얻는 데 사용되므로 압축된 형식에서 완벽하게 재구성할 수 있습니다. zip 파일에는 하나 이상의 압축 파일이 포함될 수 있습니다.

zip 파일의 좋은 기능은 저장 요구 사항을 줄이고 표준 연결을 통해 속도를 전송한다는 것입니다.

Python에서 zip 파일을 사용하려면 zipfile 모듈을 가져와야 합니다.

from zipfile import ZipFile

먼저 디렉토리에서 Zip 파일을 만드는 방법을 살펴보겠습니다. 이 경우 기본 디렉토리에는 파일과 기타 디렉토리가 있습니다.

따라서 처음에는 전체 디렉토리를 크롤링하여 모든 파일과 폴더를 가져오고 경로를 목록으로 저장해야 합니다. 그런 다음 Zip 파일을 쓰기 모드로 열고 저장된 경로에서 모두 씁니다.

예시 코드

#Get all files from directory and subdirectories and convert to zip
from zipfile import ZipFile
import os
defget_all_files(directory): #function to get all files from directory
   paths = []
   for root, dirs, files in os.walk(directory):
      for f_name in files:
         path = os.path.join(root, f_name) #get a file and add the total path
         paths.append(path)
      return paths #Return the file paths
directory = './sample_files'
paths = get_all_files(directory)
#Display the filenames
print('The following files will be stored in the zip file')
for file in paths:
   print(file)
#Open zip file as write mode to create zip
with ZipFile('my_files.zip', 'w') as zf:
for file in paths:
   zf.write(file)
print('Zip is created Successfully')

출력

The following files will be stored in the zip file
./sample_files\TP_python_prev.pdf
./sample_files\text_files\file1.txt
./sample_files\text_files\file2.txt
Zip is created Successfully

이제 zipfile 모듈을 사용하여 zip 파일을 추출하는 방법을 참조하십시오. zip을 추출하려면 먼저 zip 파일을 읽기로 열어야 합니다. 모드를 선택한 다음 extract() 또는 extractall() 메서드를 사용하여 내용을 추출합니다. extract() 메서드는 Zip 파일에서 추출할 파일을 찾는 경로를 사용합니다.

예시 코드

#Extract the zip files
from zipfile import ZipFile
zip_file = 'my_files.zip'
with ZipFile(zip_file, 'r') as zf:
   #display the files inside the zip
   zf.printdir()
   #Extracting the files from zip file
   zf.extractall()
   print('Zip Extraction Completed')

출력

File Name Modified Sizesample_files/TP_python_prev.pdf 2018-10-19 13:19:48 1915882sample_files/text_files/file1.txt 2018-11-06 13:34:46 22sample_files/text_files/file2.txt 2018-11-06 13:35:02 24Zip Extraction Completed

이제 zipfile 모듈의 infolist() 메소드에 대해 설명하겠습니다. 이것은 파일 이름, 수정 날짜, 파일 크기 등과 같은 다양한 정보 목록을 제공합니다.

예시 코드

#Get information about the zip file
from zipfile import ZipFile
import datetime
zip_file = 'my_files.zip'
with ZipFile(zip_file, 'r') as zf:
   for detail in zf.infolist():
      print('File Name: ' + detail.filename)
      print('\tModify Date: ' + str(datetime.datetime(*detail.date_time)))
      print('\tZip Version: ' + str(detail.create_version))
      print('\tSystem Version: ' + str(detail.create_system)) #0 for windows
      print('\tFile Size (Bytes): ' + str(detail.file_size))

출력

File Name: sample_files/TP_python_prev.pdf Modify Date: 2018-10-19 13:19:48 Zip Version: 20 System Version: 0 File Size (Bytes): 1915882File Name: sample_files/text_files/file1.txt Modify Date: 2018-11-06 13:34:46 Zip Version: 20 System Version: 0 File Size (Bytes): 22File Name: sample_files/text_files/file2.txt Modify Date: 2018-11-06 13:35:02 Zip Version: 20 System Version: 0 File Size (Bytes): 24