Share This
Связаться со мной
Крути в низ
Categories
//Распаковка файлов из архивов zip или tar.gz с помощью Python

Распаковка файлов из архивов zip или tar.gz с помощью Python

26.06.2021Category : Python

Перевод статьи Read/unzip File(s) from Zip Or Tar.gz With Python от John D K.

raspakovka fajlov iz arhivov zip ili targz s pomoshhju python 1d611d8 - Распаковка файлов из архивов zip или tar.gz с помощью Python

Из этой статьи вы узнаете, как распаковать один или несколько архивов zip и tar.gz и получить информацию о них средствами языка Python. Мы рассмотрим извлечение одного или нескольких файлов из архива.

Шаг 1: получить информацию из архива zip или tar.gz

Сперва мы просмотрим содержимое zip-файла с помощью этого фрагмента кода:

from zipfile import ZipFile  zipfile = 'file.zip'  z = ZipFile(zipfile) z.infolist()

Результат:

[<ZipInfo filename='file/pandas-dataframe-background-color-based-condition-value-python.png' compress_type=deflate external_attr=0x20 file_size=32152 compress_size=31441>,  <ZipInfo filename='file/text1.txt.txt' external_attr=0x20 file_size=0>]

Таким образом мы сможем узнать размеры и имена двух файлов:

  • pandas-dataframe-background-color-based-condition-value-python.png
  • text1.txt

Шаг 2: перечислить и прочитать все файлы из архива

Теперь мы можем получить список всех файлов в архиве:

from zipfile import ZipFile  archive = 'file.zip'  zip_file = ZipFile(archive) [text_file.filename for text_file in zip_file.infolist() ]

Результат:

['pandas-dataframe-background-color-based-condition-value-python.png', 'text1.txt']

Если вам нужно отсортировать файлы – например, получить только json – или прочитать их в формате датафреймов Pandas, можно сделать это следующим образом:

from zipfile import ZipFile  archive = 'file.zip'  zip_file = ZipFile(archive) dfs = {text_file.filename: pd.read_csv(zip_file.open(text_file.filename))        for text_file in zip_file.infolist()        if text_file.filename.endswith('.json')} dfs

Шаг 3: извлечь файлы из zip-архива

Пакет zipfile  можно использовать для извлечения файлов из zip-архивов. Базовый пример:

import zipfile  archive = 'file.zip'  with zipfile.ZipFile(archive, 'r') as zip_file:     zip_file.extractall(directory_to_extract_to)

Шаг 4: извлечь файлы из tar/tar.gz

Чтобы извлечь файлы из архивов tar/tar.gz, можно воспользоваться кодом, приведенным ниже. Он использует модуль tarfileи разделяет эти два типа, чтобы применить подходящий режим распаковки:

import tarfile  zipfile = 'file.zip'  if zipfile.endswith("tar.gz"):     tar = tarfile.open(zipfile, "r:gz") elif zipfile.endswith("tar"):     tar = tarfile.open(zipfile, "r:")  tar.extractall() tar.close()

Примечание: все файлы из архива будут распакованы в текущей для данного скрипта рабочей директории.

Шаг 5: извлечь один файл из архива

Если вам нужно получить только один файл из архива, можно использовать методzipObject.extract(fileName, ‘temp_py’). Простой пример:

import zipfile  archive = 'file.zip'  with zipfile.ZipFile(archive, 'r') as zip_file:     zip_file.extract('text1.txt', '.')

В этом примере мы извлечём файл ‘text1.txt’ в текущую рабочую директорию. Если вам нужно извлечь файл в другую директорию, можете изменить второй параметр — ‘.’

Заключение

В этом уроке мы выяснили, как с помощью Python извлечь один или несколько файлов из различных архивов, а также — как вывести список запакованных файлов и получить из них информацию. Мы затронули работу с двумя пакетами: zipfile и tarfile.

raspakovka fajlov iz arhivov zip ili targz s pomoshhju python ced6188 - Распаковка файлов из архивов zip или tar.gz с помощью Python

Хотите решать больше задач по Python

Подписывайтесь на нас в Телеграм

Подписаться ×

  • 2 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Свежие комментарии

    Рубрики

    About Author 01.

    Roman Spiridonov
    Roman Spiridonov

    Привет ! Мне 38 лет, я работаю в области информационных технологий более 4 лет. Тут собрано самое интересное.

    Categories 05.

    © Speccy 2020 / All rights reserved

    Связаться со мной
    Close