<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">Il giorno 31 maggio 2017 22:31, Daniele Zambelli <span dir="ltr"><<a href="mailto:daniele.zambelli@gmail.com" target="_blank">daniele.zambelli@gmail.com</a>></span> ha scritto:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-"><br>
</span>Non ho capito bene il problema, ma, forse, puoi fare la lista dei file<br>
della cartella prima di espandere lo zip e dopo averlo espanso, dal<br>
confronto dovresti trovare le cartelle create.<br>
<br clear="all"></blockquote></div>In realtà volevo evitare di fare un controllo sui file.<br></div><div class="gmail_extra">Comunque ho seguito il tuo consiglio e ho risolto così:<br>```<br> with zipfile.ZipFile(sfile.filename, 'r') as zfile:<br> # recupero la lista dei nomi dei file nello zip <br> lst = zfile.namelist()<br> # tengo conto del primo nella lista, se è una cartella DOVREBBE essere<br> # la root. <br> first = lst[0]<br> # comunque imposto la path iniziale al nome dello zip senza estensione.<br> path = splitext(basename(zfile.filename))[0]<br> # Se il primo file in lista non comincia con il nome della path <br> # *pronosticata* allora provo altre strade.<br> if not first.startswith(path):<br> # proviamo a impostare la path con il nome del primo file in lista<br> # se questo finisce con / (quindi è una cartella). Altrimenti<br> # impostiamo la path a *stringa vuota*<br> path = first if first.endswith('/') else ''<br> if path:<br> # ok creiamo una lista di percorsi relativi alla path<br> # probabile (omettiamo i file con wildcards, almeno per ora).<br> files = [<br> join(path, f.filename) for f in sfile.files<br> if not '*' in f.filename]<br> # ok ora che abbiamo creato la lista confrontiamo i percorsi <br> # con quelli presenti nello zip.<br> if not all([f in lst for f in files]):<br> # a questo punto se tutti i file previsti NON sono nella<br> # lista reimpostiamo la path a *stringa vuota*.<br> # questo farà si che i successivi join siano relativi alla<br> # cartella temporanea.<br> path = ''<br> # Non è ancora sicuro che il percorso sia corretto, ma in linea di<br> # massima a questo punto si può agire sulla configurazione.<br><br>```<br><br></div><div class="gmail_extra">Oltretutto a questo punto estraggo direttamente i file che mi servono.<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">grazie.<br></div><div class="gmail_extra">-- <br><div class="gmail_signature"><div dir="ltr"><div>Luca</div></div></div>
</div></div>