如何解决Python 3:从字符串压缩多个文件
我需要从字符串生成的多个txt文件中创建一个zip文件。
import zipfile
from io import StringIO
def zip_files(file_arr):
# file_arr is an array of [(fname,fbuffer),...]
f = StringIO()
z = zipfile.ZipFile(f,'w',zipfile.ZIP_DEFLATED)
for f in file_arr:
z.writestr(f[0],f[1])
z.close()
return f.getvalue()
file1 = ('f1.txt','Question1\nQuestion2\n\nQuestion3')
file2 = ('f2.txt','Question4\nQuestion5\n\nQuestion6')
f_arr = [file1,file2]
return zip_files(f_arr)
这会在TypeError: string argument expected,got 'bytes'
上引发错误writestr()
。我尝试使用BytesIO而不是字符串IO,但得到相同的错误。这基于this answer,它能够针对python 2做到这一点。
关于使用zipfile存储多个文件,我似乎找不到任何在线内容
解决方法
Zip文件是二进制文件,因此应使用io.BytesIO
流而不是io.StringIO
流。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。