在openpyxl中关闭文件

发布于 2021-01-29 17:25:26

正如阅读文档所预期的那样,这两个过程均未完成:

worksheet.close()
workbook.close()

一旦在openpyxl中完成,有没有办法关闭文件?还是在程序退出时自动处理?我不想让电子表格挂在内存中。

关注者
0
被浏览
419
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    好吧,您可以看一下源代码,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截至撰写本文时,我怀疑它已经发生了很大变化。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看