2012-01-19 11 views
10

Hacer algo como esto:python zipfile, ¿cómo sé si un artículo es un directorio?

from zipfile import ZipFile 

#open zip file 
zipfile = ZipFile('Photo.zip') 

#iterate zip contents 
for zipinfo in zipfile.filelist: 
    #do something 
    filepath, filename = path.split(zipinfo.filename) 

¿cómo sé si zipinfo es un archivo o un directorio?

Gracias por su apoyo.

Respuesta

12

Probablemente esta es la forma correcta:

is_dir = lambda zipinfo: zipinfo.filename.endswith('/') 
+2

Creo que el separador de directorios siempre se normaliza a '/' dentro de un archivo zip, sin importar en qué plataforma se creó. –

+0

@Greg: mi duda era que dependía de la plataforma en la que el cremallera ** se abrió ** pero no tiene una caja de Windows para probarlo. – neurino

+0

No, no hay cambio. El separador de ruta dentro de un archivo zip siempre es '/' sin importar en qué plataforma esté abierto. –

2

que comienzan con Python 3.6 no es un método ZipInfo.is_dir().

with zipfile.ZipFile(zip_file) as archive: 
    for file in archive.namelist(): 
     file_info = archive.getinfo(file) 
     if file_info.is_dir(): 
      # do something 

See the Python 3.6 docs para más detalles.

Cuestiones relacionadas