【发布时间】:2021-10-15 09:39:40
【问题描述】:
我有一个基于 Flask 的 web 应用程序,我试图在不接触磁盘的情况下在内存中执行所有操作。
我创建了一个内存中的 Word 文档(使用 python-docx 库)和一个内存中的 Excel 文件(使用 openpyxl)。它们都是 BytesIO 类型。我想用 Flask 把它们都归还,所以我想把它们压缩起来,然后把压缩文件返回给用户的浏览器。
我的代码如下:
inMemory = io.BytesIO()
zipfileObj = zipfile.ZipFile(inMemory, mode='w', compression=zipfile.ZIP_DEFLATED)
try:
print('adding files to zip archive')
zipfileObj.write(virtualWorkbook)
zipfileObj.write(virtualWordDoc)
当 zipfile 尝试写入 virtualWorkbook 时,我收到以下错误: {TypeError}stat: 路径应该是字符串、字节、os.PathLike 或整数,而不是 BytesIO
我浏览了整个互联网,但空手而归,所以如果有人能解释我做错了什么,那就太棒了
【问题讨论】:
-
ZipFile接受类似文件的对象;ZipFile.write想要实际字节:虚拟文档的内容,而不是虚拟文档本身。
标签: python-3.x