python修改zip文件内容,Python,将内存zip写入文件

How do I write an in memory zipfile to a file?

# Create in memory zip and add files

zf = zipfile.ZipFile(StringIO.StringIO(), mode='w',compression=zipfile.ZIP_DEFLATED)

zf.writestr('file1.txt', "hi")

zf.writestr('file2.txt', "hi")

# Need to write it out

f = file("C:/path/my_zip.zip", "w")

f.write(zf) # what to do here? Also tried f.write(zf.read())

f.close()

zf.close()

解决方案

StringIO.getvalue return content of StringIO:

>>> import StringIO

>>> f = StringIO.StringIO()

>>> f.write('asdf')

>>> f.getvalue()

'asdf'

Alternatively, you can change position of the file using seek:

>>> f.read()

''

>>> f.seek(0)

>>> f.read()

'asdf'

Try following:

mf = StringIO.StringIO()

with zipfile.ZipFile(mf, mode='w', compression=zipfile.ZIP_DEFLATED) as zf:

zf.writestr('file1.txt', "hi")

zf.writestr('file2.txt', "hi")

with open("C:/path/my_zip.zip", "wb") as f: # use `wb` mode

f.write(mf.getvalue())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值