当前位置: 首页 > 面试题库 >

在openpyxl中关闭文件

徐峰
2023-03-14
问题内容

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

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截至撰写本文时,我怀疑它已经发生了很大变化。



 类似资料:
  • 问题内容: 通常,当我打开文件时,我从不调用该方法,也不会发生任何不良情况。但是有人告诉我这是不好的做法。这是为什么? 问题答案: 在大多数情况下,不关闭文件是一个坏主意,原因如下: 它会将您的程序放在垃圾收集器的手中-尽管 理论上 该文件将自动关闭,但可能不会关闭。Python 3和Cpython通常在垃圾收集方面做得相当不错,但并非总是如此,其他变体通常也很烂。 它可能会降低您的程序速度。打开

  • 问题内容: 我希望能够使用Python读取Excel文件,在读取完成后保持Python脚本运行,并执行其他操作,同时能够在另一个进程中编辑Excel文件。我正在使用python 2.7和openpyxl。 当前看起来像: 运行函数后,即使我不想再使用Python读取Excel文件,它仍然被锁定以供其他进程访问(它给出错误“当前正在使用’‘文件名’。请稍后再试”。) 如何从脚本关闭文件?我尝试了OE

  • 这个问题似乎不是关于特定的编程问题、软件算法或主要由程序员使用的软件工具。如果您认为该问题将在另一个Stack Exchange站点上讨论,您可以留下评论,解释该问题可以在何处回答。 未解决原始关闭原因 我有一个大小为2.5 GB的日志文件。有没有办法使用windows命令提示符将此文件拆分为更小的文件?

  • 问题内容: 所有, 我试图确保在捕获IOException时关闭我用BufferedReader打开的文件,但它看起来好像我的BufferedReader对象超出了catch块的范围。 Netbeans抱怨说它在catch块中“找不到符号fileIn”,但是我想确保在发生IOException的情况下,Reader被关闭。在没有围绕第一个try / catch构造的丑陋的情况下,我该怎么做呢? 在

  • 问题内容: 我需要有关在Openpyxl中设置样式的建议。 我看到可以设置单元格的NumberFormat,但是我还需要设置字体颜色和属性(粗体等)。有一个style.py类,但是似乎我无法设置单元格的style属性,而且我真的不想开始修改openpyxl源代码。 有没有人找到解决方案? 问题答案: 从openpyxl版本1.5.7开始,我已成功应用以下工作表样式选项… 仅供参考,您可以在…中找到

  • 我有一本书。conf文件,我想找到一个以字符串开头的文本块,该字符串是动态的,因为它是从另一个文件加载的。块的结尾将基于一个始终以字符串“endblock”开头的字符串。街上的街区。conf文件如下所示,最后有一个示例需要澄清。 我可以用以下代码加载文本: 例如: 我想知道下面的文本块是否存在于名为example.conf的文件中,如果条件是True,我不想把它写在文件中。否则,我想添加文本块。如

  • 我在springboot应用程序中使用webclient来调用外部restful web服务。间歇性地获取此异常。 在收到此异常之前,我在日志中看到以下警告。 这是完整的堆栈跟踪: 这是MessageServiceImpl.java 这里是客户端组件类 在下面的配置中,我在SSLContext中添加了信任存储。 下面是应用程序属性文件 我已经尝试通过下面链接中给出的解决方案来解决这个问题,但是没有

  • 我有一个如下的文本文件 我需要像下面的格式一样转换成json 对于javascript应用程序。