Descompactar ficheiros em Python

Azaz Farooq 10 outubro 2023
  1. Descompactar ficheiros em Python Utilizando o extractall() Método para o Directório de Trabalho
  2. Descompacte arquivos em Python usando o método extractall() para um diretório diferente
  3. Descompacte arquivos em Python usando o método extractall() com base na condição
  4. Descompactar ficheiros em Python utilizando o unpack_archive() Método
Descompactar ficheiros em Python

Um ficheiro ZIP tem um formato de ficheiro de arquivo e ajuda na compressão de dados sem perdas. Um único ficheiro ZIP pode conter mais do que um ficheiro comprimido. Num ficheiro ZIP, vários ficheiros são transferidos mais rapidamente do que um único ficheiro, o que diminui o tamanho dos dados. O módulo Python inbuilt ZipFile pode ser utilizado para descomprimir os ficheiros Zip.

Este artigo irá discutir os diferentes métodos para extrair os ficheiros comprimidos ou Zip em Python.

Descompactar ficheiros em Python Utilizando o extractall() Método para o Directório de Trabalho

Vamos primeiro importar o módulo Python inbuilt zipfile do Python utilizando o comando abaixo.

from zipfile import ZipFile

O código completo do exemplo é o seguinte:

from zipfile import ZipFile

test_file_name = "my_files.zip"

with ZipFile(test_file_name, "r") as zip:
    zip.printdir()
    zip.extractall()

O r na função ZipFile representa a operação de leitura do ficheiro, enquanto que a função extractall() extrairá o conteúdo do ficheiro zip para o directório de trabalho actual.

Resultado:

 File Name         Modified                  Size
file1.txt          2020-11-09 23:03:06        0
file2.txt          2020-11-09 23:03:18        0

Descompacte arquivos em Python usando o método extractall() para um diretório diferente

Este método extrai os ficheiros zip mas para um directório diferente. A principal diferença é que passaremos o directório de destino como um argumento no método extractall().

O código completo do exemplo é o seguinte:

from zipfile import ZipFile

with ZipFile("my_files.zip", "r") as zip:
    zip.extractall("temp")
    print("File is unzipped in temp folder")

Um novo directório temp será criado no directório de trabalho actual, e todos os ficheiros zip são aí extraídos.

Resultado:

Files are unzipped in temp folder

Descompacte arquivos em Python usando o método extractall() com base na condição

Este método é útil quando se tem um grande número de ficheiros num ficheiro zip, e é necessário extrair ficheiros com uma extensão específica. Por exemplo, iremos extrair ficheiros .txt do ficheiro zip.

O código completo do exemplo é o seguinte:

from zipfile import ZipFile

with ZipFile("my_files.zip", "r") as obj_zip:
    FileNames = obj_zip.namelist()
    for fileName in FileNames:
        if fileName.endswith(".txt"):
            zipObj.extract(fileName, "temp_txt")

A função namelist() devolve os nomes de todos os ficheiros no ficheiro zip.

O método endswith() verifica se o nome do ficheiro termina com .txt. Se assim for, a função extract() extrairá os ficheiros .txt para a pasta temp_txt no directório de trabalho actual.

Descompactar ficheiros em Python utilizando o unpack_archive() Método

Este método utiliza o módulo Python inbuilt shutil em Python. Ele extrairá todos os formatos de ficheiros arquivados.

O código completo do exemplo é o seguinte:

import shutil

shutil.unpack_archive("test.zip")

Os ficheiros extraídos estarão no directório de trabalho actual onde está a executar este script.