Um arquivo compactado contém muitos arquivos, diretórios e subdiretos. Muitos aplicativos estão disponíveis para criar um arquivo de compactação de qualquer arquivo ou diretório grande e recuperar arquivos ou pastas extraindo um arquivo compactado. Quando queremos transferir qualquer grande ou pasta pela Internet, é melhor comprimir o conteúdo antes de transferir. Isso torna a tarefa mais rápida. Você pode usar scripts Python para comprimir e extrair qualquer arquivo ou diretório grande.
ZipFile O módulo de python é usado para realizar a tarefa. Como você pode usar o Python3 para comprimir qualquer arquivo ou diretório é mostrado neste tutorial usando vários exemplos.
Exemplo 1: Comprimindo um único arquivo
Crie um novo arquivo chamado 'ZIPCODE1.py ' e adicione o seguinte código. ZipFile O módulo é importado para comprimir o arquivo. Temp.fecho eclair é atribuído como nome do arquivo zip no modo de gravação e, em seguida, o nome do arquivo original, Temp.TXT e o tipo de compactação é dado como parâmetros no método de gravação.
Importar ZipFile
zip_file = zipfile.ZipFile ('Temp.Zip ',' W ')
zip_file.Write ('Temp.txt ', compress_type = zipfile.Zip_deflated)
zip_file.fechar()
Execute o script
$ python3 zipcode1.py
O tamanho de Temp.TXT é 27 bytes e após a compressão, o tamanho de Temp.fecho eclair é 2 bytes.
Exemplo 2: Compressionando um diretório específico
Crie um novo arquivo chamado 'ZIPCODE2.py ' e adicione o seguinte código. Um diretório pode contém muitos arquivos, pastas e subpastas. Para ler o conteúdo do diretório, OS módulo de python é importado com ZipFile módulo para comprimir o diretório. Neste script, mydir O diretório é usado para compactação.
# Importar módulos necessários
OS de importação
Importar ZipFile
# Declare a função de retornar todos os caminhos de arquivo do diretório específico
DEF RETRIEVE_FILE_PATHS (Dirname):
# Caminhos de arquivo de configuração Variável
filepaths = []
# Leia todos os diretórios, subdiretos e listas de arquivos
para root, diretórios, arquivos no sistema operacional.Walk (Dirname):
Para o nome do arquivo em arquivos:
# Crie o FilePath completo usando o módulo OS.
filepath = os.caminho.Junte -se (root, nome do arquivo)
filepaths.Anexar (FilePath)
# Retorne todos os caminhos
retornar filepaths
# Declare a função principal
def main ():
# Atribua o nome do diretório para ZIP
dir_name = 'mydir'
# Ligue para a função para recuperar todos os arquivos e pastas do diretório atribuído
filepaths = recuperação_file_paths (dir_name)
# Imprimindo a lista de todos os arquivos a serem fechados
Print ('A seguinte lista de arquivos será fechada:')
para o nome do arquivo em filepaths:
Imprimir (nome do arquivo)
# escrevendo arquivos em um zipfile
zip_file = zipfile.Zipfile (dir_name+'.Zip ',' W ')
com zip_file:
# escrevendo cada arquivo um por um
para arquivo em filepaths:
zip_file.Write (arquivo)
Imprimir (dir_name+'.O arquivo zip é criado com sucesso!')
# Ligue para a função principal
Se __name__ == "__main__":
principal()
Execute o script
$ python3 zipcode2.py
O tamanho de mydir é 21 bytes e após a compressão, o tamanho de mydir.fecho eclair é 2 bytes.
Exemplo 3: Compressionando um diretório dado pelo argumento da linha de comando
Crie um novo arquivo chamado 'ZIPCODE3.py ' e adicione o seguinte código. Para ler o valor da linha de comando, outro módulo Python sys é importado com OS e ZipFile módulos.
# Importar módulos necessários
OS de importação
Importar sistemas
Importar ZipFile
# Declare a função de retornar todos os caminhos de arquivo de um diretório específico
DEF RETRIEVE_FILE_PATHS (Dirname):
# Caminhos de arquivo de configuração Variável
filepaths = []
# Leia todos os diretórios, subdiretos e listas de arquivos
para root, diretórios, arquivos no sistema operacional.Walk (Dirname):
Para o nome do arquivo em arquivos:
# Crie o FilePath completo usando o módulo OS.
filepath = os.caminho.Junte -se (root, nome do arquivo)
filepaths.Anexar (FilePath)
# Retorne todos os caminhos
retornar filepaths
# Declare a função principal
def main ():
# Verifique dois argumentos são apresentados no momento da execução do script
Se Len (SYS.argv) != 2:
print ("Você inseriu o nome do diretório para zip")
sys.saída (1)
# Defina o nome do diretório do argumento de comando
DIR_NAME = SYS.argv [1]
# Defina o nome do arquivo zip
zipfilename = DIR_NAME + ".fecho eclair"
# Ligue para a função para recuperar todos os arquivos e pastas do diretório atribuído
filepaths = recuperação_file_paths (dir_name)
# Imprima a lista de arquivos a serem fechados
Print ('A seguinte lista de arquivos será fechada:')
para o nome do arquivo em filepaths:
Imprimir (nome do arquivo)
# Escreva arquivos e pastas em um zipfile
zip_file = zipfile.ZipFile (ZipFileName, 'W')
com zip_file:
# Escreva cada arquivo separadamente
para arquivo em filepaths:
zip_file.Write (arquivo)
Imprimir (o arquivo zipfilename+'é criado com sucesso!')
# Ligue para a função principal
Se __name__ == "__main__":
principal()
Execute o script
$ python3 zipcode3.py
teste é dado como nome de diretório no argumento da linha de comando. O tamanho de teste é 21 bytes e após a compressão, o tamanho de teste.fecho eclair é 2 bytes.
Espero que este tutorial o ajude a usar o Python para comprimir qualquer arquivo ou diretório.