Re: [Python] zipfile.extractall ...

2017-06-01 Per discussione Luca
Il giorno 31 maggio 2017 22:31, Daniele Zambelli  ha scritto:

>
> Non ho capito bene il problema, ma, forse, puoi fare la lista dei file
> della cartella prima di espandere lo zip e dopo averlo espanso, dal
> confronto dovresti trovare le cartelle create.
>
> In realtà volevo evitare di fare un controllo sui file.
Comunque ho seguito il tuo consiglio e ho risolto così:
```
with zipfile.ZipFile(sfile.filename, 'r') as zfile:
# recupero la lista dei nomi dei file nello zip
lst = zfile.namelist()
# tengo conto del primo nella lista, se è una cartella DOVREBBE
essere
# la root.
first = lst[0]
# comunque imposto la path iniziale al nome dello zip senza
estensione.
path = splitext(basename(zfile.filename))[0]
# Se il primo file in lista non comincia con il nome della path
# *pronosticata* allora provo altre strade.
if not first.startswith(path):
# proviamo a impostare la path con il nome del primo file in
lista
# se questo finisce con / (quindi è una cartella). Altrimenti
# impostiamo la path a *stringa vuota*
path = first if first.endswith('/') else ''
if path:
# ok creiamo una lista di percorsi relativi alla path
# probabile (omettiamo i file con wildcards, almeno per
ora).
files = [
join(path, f.filename) for f in sfile.files
if not '*' in f.filename]
# ok ora che abbiamo creato la lista confrontiamo i
percorsi
# con quelli presenti nello zip.
if not all([f in lst for f in files]):
# a questo punto se tutti i file previsti NON sono nella
# lista reimpostiamo la path a *stringa vuota*.
# questo farà si che i successivi join siano relativi
alla
# cartella temporanea.
path = ''
# Non è ancora sicuro che il percorso sia corretto, ma in linea di
# massima a questo punto si può agire sulla configurazione.

```

Oltretutto a questo punto estraggo direttamente i file che mi servono.

grazie.
-- 
Luca
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] zipfile.extractall ...

2017-05-31 Per discussione Daniele Zambelli
Il 31 maggio 2017 18:05, Luca  ha scritto:
> Purtroppo ho dei casi dove la cartella di *scompressione* non è ne il nome
> del file ne la cartella temporanea.
> Ho provato anche a usare *namelist* per recuperare la path ma nel caso di
> cartella temp come root non funziona.

Non ho capito bene il problema, ma, forse, puoi fare la lista dei file
della cartella prima di espandere lo zip e dopo averlo espanso, dal
confronto dovresti trovare le cartelle create.

Ciao

-- 

Daniele

www.fugamatematica.blogspot.com

giusto!
nel verso
forse è perché non guardiamo le cose
Quando non ci capiamo,
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python