Работа с ZIP-архивами

Введение

Примеры

  • 1

    Открытие Zip файлов

    Для начала импортировать zipfile модуль и установить имя файла.

     import zipfile
    filename = 'zipfile.zip'
    
     

    Работа с почтовыми архивами очень похоже на работу с файлами , вы создаете объект, открыв ZipFile, которая позволяет работать на нем , прежде чем закрыть файл снова.

     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>
    
     
  • 1

    Изучение содержимого 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 
  • 0

    Извлечение содержимого zip-файла в каталог

    Извлечь все содержимое файла zip-файла

     import zipfile
    with zipfile.ZipFile('zipfile.zip','r') as zfile:
        zfile.extractall('path')
    
     

    Если вы хотите извлечь отдельные файлы, используйте метод extract, он принимает список имен и путь в качестве входного параметра

     import zipfile
    f=open('zipfile.zip','rb')
    zfile=zipfile.ZipFile(f)
    for cont in zfile.namelist():
        zfile.extract(cont,path) 
  • 0

    Создание новых архивов

    Для создания нового архива откройте zipfile с режимом записи.

     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() 

Синтаксис

Параметры

Примечания