Descompactando arquivos em um diretório específico

1. Descompactando arquivos em um diretório específico

Adriano Christi
ACMM

(usa Ubuntu)

Enviado em 10/09/2021 - 10:29h

#!/usr/bin/env python
from subprocess import Popen, PIPE
import sys, os, re, zipfile
def unpack( ):
    ply = os.path.abspath('../Personalization/User_Extensions')
    arch = os.listdir(ply)
    comp = [x for x in arch if not os.path.isdir(f'{ply}/{x}')]
    r = ''

    while (r != 's') or (r != 'n'):
        r = input('\nANTES DE COMEÇAR A PERSONALIZAÇÃO DO SISTEMA COM AS EXTENSÕES, \nCOLOQUE O ARQUIVO COMPACTADO COM A EXTENSÃO QUE DESEJA USAR NO \nSISTEMA DENTRO DO DIRETÓRIO New_System/Personalization/User_Extensions. \nDESEJA CONTINUAR O PROCEDIMENTO? (S/N) \n').lower( )
        if r == 'n':
            break
        if r == 's':
            print('\nESCOLHA A EXTENSÃO QUE DESEJA INSTALAR:')
            for x in range(len(comp)):
                print(f'{x + 1} - {comp[x]}')
            ch = input('> ')
			
            ext = comp[int(ch) - 1]
            fl = os.popen(f'unzip -p {ply}/{ext} metadata.json').read( ).strip( )
            n = re.split("[, \"'{[\_/!?:;*]+", fl)
            uid = n[n.index('uuid') + 1]
			
            if not dest.split('/')[-1] in arch:
                print('NÃO TEM.')
                os.popen(f'mkdir {os.path.join(ply, uid)}')
            else:
                print('TEM.')
                with zipfile.ZipFile(f'{os.path.join(ply, ext)}', "r") as z:
                    z.extractall('{os.path.join(ply, uid)}')
            print(os.listdir(f'{os.path.join(ply, uid)}'))
        break 


Esse arquivo em Python, onde esta este trecho de código, esta dentro de um diretório chamado Codes e o arquivo zipado está dentro de Personalization/User_Extensions e ambos os diretórios estão dentro de New_System que é a pasta raíz do programa.
Esse trecho de código, que ainda esta em fase de testes, serve pra criar um diretório, confirmar se esse diretório existe ou não e desempacotar o conteúdo de um arquivo .zip dentro desse diretório.
O problema é que mesmo depois do diretório ser criado, o código náo descompacta os arquivos dentro dele, além de mostrar a mensagem de erro dizendo que o diretório não existe.
Eu fiz esse trecho:
print(os.listdir(f'{os.path.join(ply, uid)}')) 

só pra poder confirmar se os arquivos foram descompactados ou não e quando não dá erro e mostra, sempre está vazio.
Alguém poderia me ajudar a resolver esse problema?
Agradeço pela força.


  


2. Re: Descompactando arquivos em um diretório específico

Diego Mendes Rodrigues
diegomrodrigues

(usa Ubuntu)

Enviado em 12/09/2021 - 09:01h

Segue um exemplo de código, onde extraio o conteúdo de um arquivo ZIP para uma pasta determinada no script Python.
'''
Extrair o conteúdo de um arquivo ZIP para uma pasta determinada no script
Diego Mendes Rodrigues
'''
import os
import zipfile

# O diretório de destino precisa possuir o caminho completo no sistema operacional (Windows ou Linux)
diretorio = 'D://Arquivos'

# Arquivo ZIP que será descompactado
arquivo_zip = 'Exemplo.zip'

try:
    os.mkdir(diretorio)
    print('Diretório criado')

    if zipfile.is_zipfile(arquivo_zip):
        with zipfile.ZipFile(arquivo_zip) as arquivo:
            arquivo.extractall(path=diretorio)
            print(f'Arquivos excluídos em {diretorio}')
    else:
        print('Arquivo ZIP inválido')
except OSError as error:
    print(f'Falha ao criar o diretório. Erro:\n{error}')
 


Atenciosamente,
Diego M. Rodrigues






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts