Cierre de archivos en openpyxl

Ninguno de estos procesos, como se esperaría leyendo la documentación:

worksheet.close() workbook.close() 

¿Hay una manera de cerrar archivos una vez hecho en openpyxl? ¿O se maneja automáticamente cuando el progtwig se cierra? No quiero dejar las hojas de cálculo colgadas en la memoria.

Bueno, puedes echar un vistazo al código fuente. Actualmente estoy usando 1.5.5 como tal.

 def load_workbook(filename, use_iterators=False): if isinstance(filename, file): # fileobject must have been opened with 'rb' flag # it is required by zipfile if 'b' not in filename.mode: raise OpenModeError("File-object must be opened in binary mode") try: archive = ZipFile(filename, 'r', ZIP_DEFLATED) except (BadZipfile, RuntimeError, IOError, ValueError), e: raise InvalidFileException(unicode(e)) wb = Workbook() if use_iterators: wb._set_optimized_read() try: _load_workbook(wb, archive, filename, use_iterators) except KeyError, e: raise InvalidFileException(unicode(e)) finally: archive.close() return wb 

parece que sí cierra el archivo, cuando cargamos un libro de trabajo, ¿qué tal cuando lo guardamos?

  def save(self, filename): """Write data into the archive.""" archive = ZipFile(filename, 'w', ZIP_DEFLATED) self.write_data(archive) archive.close() 

Parece que también cierra el archivo cuando lo guardamos.

Fundamentalmente, leemos un libro de Excel en la memoria de un archivo que se cierra después, hacemos actualizaciones, si no lo guardamos, los cambios se pierden, si lo guardamos, el archivo se cierra después de escribirlo.

¿Hay una manera de cerrar archivos una vez hecho en openpyxl? ¿O se maneja automáticamente cuando el progtwig se cierra? No quiero dejar las hojas de cálculo colgadas en la memoria.

puede guardar sus cambios usando wb.save(filename = dest_filename) como se handled automatically al leer o escribir en un archivo, entonces sí, se cierra después de la operación, pero al abrir openpyxl, se guardan automáticamente los cambios y luego no hay esa class Workbook(object): doesn ‘ t tiene __del__ entonces no se llama nada cuando se elimina ese objeto o se recolecta la basura, de nuevo, esto es para 1.5.5 la versión actual es 1.5.8 partir de este escrito, dudo mucho que haya cambiado.