es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Descomprima varios archivos sin perder la fecha de creación original.

Estoy descomprimiendo cientos de archivos comprimidos con Python como se explica aquí.

import os
import zipfile

base_dir = '/usuarios/yo/miArchivo' # ruta absoluta a la carpeta de datos
extension = ".zip"

os.chdir(base_dir)  # cambia el directorio de trabajo al directorio con los archivos

def descomprimir<em>todo</em>en<em>dir(dir):
    for item in os.listdir(<em>dir):  # recorre los elementos del directorio
        abs</em>ruta = os.path.join(<em>dir, item)  # ruta absoluta del directorio o archivo
        if item.endswith(extension):  # comprueba la extensión ".zip"
            nombre</em>archivo = os.path.abspath(abs<em>ruta)  # obtener la ruta completa del archivo
            zip</em>ref = zipfile.ZipFile(nombre<em>archivo)  # crea un objeto zipfile
            zip</em>ref.extractall(<em>dir)  # descomprime el archivo en el directorio
            zip</em>ref.close()  # cierra el archivo
        elif os.path.isdir(abs<em>ruta):
            descomprimir</em>todo<em>en</em>dir(abs</em>ruta)  # recursividad de esta función con la carpeta interna

descomprimir<em>todo</em>en<em>dir(base</em>dir)

Cuando descomprimo un archivo manualmente, conserva su fecha de modificación original, mientras que al hacerlo con código, pierdo esto; la fecha de modificación se convierte en la fecha actual.

¿Alguna idea de cómo conservar la fecha de creación original?

descripción de la imagen

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para preservar la fecha de creación original de los archivos al descomprimirlos con Python, puedes utilizar la opción -o (--overwrite) del método extractall() del módulo zipfile. Esta opción sobrescribirá los archivos existentes si tienen el mismo nombre, pero preservará su hora de modificación original.

    Entonces, puedes modificar la línea zip_ref.extractall(_dir) en el código de la siguiente manera:

    zip_ref.extractall(_dir, None)  # extraer archivo al directorio sin sobrescribir
    

    Esto extraerá los archivos sin sobrescribir los existentes y, por lo tanto, preservará su fecha de creación original.

Comments are closed.