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