在openpyxl中关闭文件
正如阅读文档所预期的那样,这两个过程均未完成:
worksheet.close()
workbook.close()
一旦在openpyxl中完成,有没有办法关闭文件?还是在程序退出时自动处理?我不想让电子表格挂在内存中。
-
好吧,您可以看一下源代码,Im目前正在使用1.5.5
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
看起来是的,它确实关闭了存档,当我们加载工作簿时,如何保存它呢?
def save(self, filename): """Write data into the archive.""" archive = ZipFile(filename, 'w', ZIP_DEFLATED) self.write_data(archive) archive.close()
当我们保存档案时,它似乎也会关闭档案。
从根本上讲,我们从一个文件中将一个excel工作簿读入内存,然后将其关闭,进行更新,如果不保存,则更改可能会丢失,如果保存,则写入后文件将被关闭。
一旦在openpyxl中完成,有没有办法关闭文件?还是在程序退出时自动处理?我不想让电子表格挂在内存中。
您可以使用保存更改
wb.save(filename = dest_filename)
为handled automatically
看书或写,然后是它的操作后关闭文件时,可自动为openpyxl保存更改,然后 不 在于class Workbook(object):
不具有__del__
那么没有什么是当对象被删除或垃圾收集调用,再次这是针对1.5.5
当前版本,1.5.8
截至撰写本文时,我怀疑它已经发生了很大变化。