Python Arquivo ZIP com exemplo

Python permite que vocรช crie rapidamente arquivos zip/tar.

O comando a seguir compactarรก o diretรณrio inteiro

shutil.make_archive(output_filename, 'zip', dir_name)

O comando a seguir lhe dรก controle sobre os arquivos que vocรช deseja arquivar

ZipFile.write(filename)

Aqui estรฃo as etapas para criar um arquivo Zip em Python

Passo 1) Para criar um arquivo compactado de Python, certifique-se de que sua declaraรงรฃo de importaรงรฃo esteja correta e em ordem. Aqui, a declaraรงรฃo de importaรงรฃo para o arquivo รฉ from shutil import make_archive

Python Arquivo ZIP

Explicaรงรฃo do cรณdigo

  • Importe a classe make_archive do mรณdulo shutil
  • Use a funรงรฃo split para separar o diretรณrio e o nome do arquivo do caminho atรฉ o local do arquivo de texto (guru99)
  • Em seguida, chamamos o mรณdulo โ€œshutil.make_archive(โ€œguru99 archive, โ€œzipโ€, root_dir)โ€ para criar o arquivo compactado, que estarรก no formato zip
  • Depois disso, passamos o diretรณrio raiz das coisas que queremos compactar. Entรฃo, tudo no diretรณrio serรก compactado
  • Ao executar o cรณdigo, vocรช pode ver que o arquivo zip foi criado no lado direito do painel.

Passo 2) Depois que seu arquivo compactado for criado, vocรช pode clicar com o botรฃo direito no arquivo e selecionar o sistema operacional, e ele mostrarรก seus arquivos compactados como mostrado abaixo

Python Arquivo ZIP

Agora seu arquivo archive.zip aparecerรก no seu sistema operacional (Windows explorer)

Python Arquivo ZIP

Passo 3) Ao clicar duas vezes no arquivo, vocรช verรก a lista de todos os arquivos contidos nele.

Python Arquivo ZIP

Passo 4) In Python podemos ter mais controle sobre o arquivo, pois podemos definir qual arquivo especรญfico incluir em arquivo. No nosso caso, incluiremos dois arquivos em arquivo โ€œguru99.txtโ€ e โ€œguru99.txt.bakโ€.

Python Arquivo ZIP

Explicaรงรฃo do cรณdigo

  • Importar classe Zipfile do arquivo zip Python mรณdulo. Este mรณdulo oferece controle total sobre a criaรงรฃo de arquivos zip
  • Criamos um novo arquivo Zip com nome (โ€œtestguru99.zip, โ€œwโ€)
  • A criaรงรฃo de uma nova classe Zipfile requer permissรฃo porque รฉ um arquivo, entรฃo vocรช precisa gravar informaรงรตes no arquivo como newzip
  • Usamos a variรกvel โ€œnewzipโ€ para nos referir ao arquivo zip que criamos
  • Usando a funรงรฃo write na variรกvel โ€œnewzipโ€, adicionamos os arquivos โ€œguru99.txtโ€ e โ€œguru99.txt.bakโ€ ao arquivo

Ao executar o cรณdigo vocรช pode ver que o arquivo รฉ criado no lado direito do painel com o nome โ€œguru99.zipโ€

Observaรงรฃo: Aqui nรฃo damos nenhum comando para โ€œfecharโ€ o arquivo como โ€œnewzip.closeโ€ porque usamos o bloqueio de escopo โ€œWithโ€, entรฃo quando o programa sair deste escopo o arquivo serรก limpo e fechado automaticamente.

Passo 5) Quando vocรช -> clique com o botรฃo direito no arquivo (testguru99.zip) e -> selecione seu sistema operacional (Windows explorer), ele mostrarรก os arquivos compactados na pasta conforme mostrado abaixo.

Python Arquivo ZIP

Ao clicar duas vezes no arquivo โ€œtestguru99.zipโ€, outra janela serรก aberta, e esta mostrarรก os arquivos nela incluรญdos.

Python Arquivo ZIP

Aqui estรก o cรณdigo completo

Python 2 Exemplo

import os
import shutil
from zipfile import ZipFile
from os import path
from shutil import make_archive

def main():
# Check if file exists
	if path.exists("guru99.txt"):
# get the path to the file in the current directory
	src = path.realpath("guru99.txt");
# rename the original file
	os.rename("career.guru99.txt","guru99.txt")
# now put things into a ZIP archive
	root_dir,tail = path.split(src)
    shutil.make_archive("guru99 archive", "zip", root_dir)
# more fine-grained control over ZIP files
	with ZipFile("testguru99.zip","w") as newzip:
	newzip.write("guru99.txt")
	    newzip.write("guru99.txt.bak")
if __name__== "__main__":
	  main()

Python 3 Exemplo

import os
import shutil
from zipfile import ZipFile
from os import path
from shutil import make_archive

    # Check if file exists
       if path.exists("guru99.txt"):
    # get the path to the file in the current directory
        src = path.realpath("guru99.txt");
    # rename the original file
        os.rename("career.guru99.txt","guru99.txt")
    # now put things into a ZIP archive
        root_dir,tail = path.split(src)
        shutil.make_archive("guru99 archive","zip",root_dir)
    # more fine-grained control over ZIP files
        with ZipFile("testguru99.zip", "w") as newzip:
            newzip.write("guru99.txt")
            newzip.write("guru99.txt.bak")

Resumo

  • Para compactar o diretรณrio inteiro, use o comando โ€œshutil.make_archive(โ€œnameโ€,โ€zipโ€, root_dir)
  • Para selecionar os arquivos para compactar use o comando โ€œZipFile.write(filename)โ€

Resuma esta postagem com: