Crear y leer ficheros ZIP

'''Programa de pruebas para el manejo del modulo zipfile.'''
__shell_usage__ = '''\nAyuda:
Este programa crea un fichero zip con todos los ficheros de un directorio.
Dicho fichero zip se guarda en el mismo directorio.
Uso: pruebaszip [-c] [-l] [--help]
        -c:     crea un zip
        -l:     lista los ficheros de un fichero zip y muestra informacion
        --help: muestra esta pantalla de ayuda
'''
__author__ = 'Arturo Suelves Albert: arturosa@lycos.es'
__version__ = 'Pruebas de ZIP - 20/04/2001'
import zipfile
import os.path
import os,sys
def hacer_zip(ficherozip,directorio_ficheros_a_zipear):
    lista_de_ficheros_a_zipear=os.listdir(directorio_ficheros_a_zipear)
    a=zipfile.ZipFile(ficherozip,'w',8)
    for i in lista_de_ficheros_a_zipear:
        if os.path.isfile(str(directorio_ficheros_a_zipear)+'\\'+str(i)):
            a.write(str(directorio_ficheros_a_zipear)+'\\'+str(i))
            print'.',
    a.close()
def leer_zip(ficherozip):
    a=zipfile.ZipFile(ficherozip,'r')
    #print 'Lista de ficheros incluidos en el zip: ',a.namelist(),'\n'
    #fichero_a_ver=raw_input('Fichero a visualizar: ')
    print a.read(fichero_a_ver)
    for contador in a.namelist():
        print a.read(contador) #esta linea imprime el contenido del fichero
        print '\nNombre del fichero: '+contador
        print 'Ultima modificacion del fichero: '+str(a.getinfo(contador).date_time)
        print 'Sistema que creo el fichero: '+str(a.getinfo(contador).create_system)
        print 'Tamaño comprimido: '+str(a.getinfo(contador).compress_size)
        print 'Tamaño descomprimido: '+str(a.getinfo(contador).file_size)
        print 'Tipo de compresion: '+str(a.getinfo(contador).compress_type)+'\n'
        tecla=raw_input('Pulse ENTER para ver el siguiente documento en el fichero zip.')
    a.close()
 
    
if __name__ == '__main__':
    if len(sys.argv) == 2:
        if sys.argv[1] == '-c':
            directorio_trabajo=raw_input('\nDirectorio con los ficheros a zipear:')
            os.chdir(directorio_trabajo)
            nombre_zip=raw_input('\nNombre del fichero ZIP: ')
            if os.path.isfile(nombre_zip):
                print '\nYa existe un fichero en el directorio con este nombre: '+nombre_zip
                sys.exit()
            else:
                hacer_zip(nombre_zip,directorio_trabajo)
        else:
            if sys.argv[1] == '-l':
                nombre_zip=raw_input('\nPath completo del fichero ZIP: ')
                leer_zip(nombre_zip)
            else:
                    print '\nNombre del programa:',sys.argv[0]
                    print __shell_usage__
                    print __author__
    else:
        print '\nNombre del programa:',sys.argv[0]
        print __shell_usage__
        print __author__
    sys.exit()

No hay comentarios:

Publicar un comentario