<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>