Foros del Web » Programando para Internet » Python »

como crear .zip desde programa python?

Estas en el tema de como crear .zip desde programa python? en el foro de Python en Foros del Web. Hola a todos! Quiero crear una carpeta comprimida en .zip desde el propio programa python. Primero abro los ficheros .txt y los manipulo para añadir ...
  #1 (permalink)  
Antiguo 11/02/2009, 06:04
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 18 años, 9 meses
Puntos: 0
como crear .zip desde programa python?

Hola a todos! Quiero crear una carpeta comprimida en .zip desde el propio programa python.
Primero abro los ficheros .txt y los manipulo para añadir datos. Estos ficheros los guardo en el escritorio de mi ordenador. Luego cojo estos ficheros y los quiero meter en una carpeta .zip que también estará en el escritorio.

Código:
path="home/yo/Escritorio/"
fich1=open(path+"fichero1.txt", "a")
fich1.write("cosas")
...
fich2=open(path+"fichero2.txt","a")
fich2.write("mascosas")
...
zip = zipfile.ZipFile(path+"comprimido.zip", 'w')

zip.write(fich1)
zip.write(fich2)

zip.close()
Si lo hago así, me da este error cuando llega a zip.write(fich1):

Cita:
File "/usr/lib/python2.5/zipfile.py", line 541, in write
st = os.stat(filename)
TypeError: coercing to Unicode: need string or buffer, file found
He probado a poner zip.write("/home/yo/Escritorio/fich1.txt") y lo que ha hecho es crear la carpeta zip pero dentro de ella está la carpeta home, dentro la carpeta yo, dentro la carpeta Escritorio y dentro fich1.txt.
Lo que quiero es que añada los fich directamente, sin ninguna carpeta más dentro de la comprimida.

¿Alguien sabe cómo hacerlo?
Muchas gracias!!
  #2 (permalink)  
Antiguo 11/02/2009, 09:21
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: como crear .zip desde programa python?

Ya lo he conseguido. El problema principal era que al darle una ruta que no era la "de python" me creaba una carpeta por cada subcarpeta. La solución ha sido moverme a la carpeta en la que quiero crear el archivo .zip.

Código:
os.chdir(path)  #cambiar al directorio donde quiero crear la carpeta zip

zfilename = "comprimido.zip"
tFile = zipfile.ZipFile(zfilename, "w")
files = os.listdir(path)

for file in files:
    print file
    if os.path.isfile(file):
        if file != zfilename:  # para que no meta el archivo comprimido en el archivo comprimido generando un bucle infinito
            tFile.write(file)
tFile.close()
Un saludo!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 02:40.