python解压到指定文件夹_Python:将文件解压缩到当前工作目录,但不保存zip中的目录结构...

我有一个像这样的zip文件:

myArchive.zip

|

-folder1

|

--folder2

|

---myimage.jpg

当我尝试提取myimage.jpg时:

with zipfile.ZipFile('myArchive.zip', 'r') as zfile:

zfile.extract('folder1/folder2/myimage.jpg')

我将在我当前工作的目录中获得/folder1/folder2/myimage.jpg

但我只想将myimage.jpg提取到当前工作目录,我该怎么办呢?

解决方法:

而不是使用extract或extractall,只需获取数据并将其写入您喜欢的任何文件.这是一个代码示例,可以满足您的需求:

import os, sys, time

import zipfile

ENC = 'cp437'

outdir = unicode(os.path.abspath('.'))

outzip = 'c:/1temp/timbersales.zip'

zf = zipfile.ZipFile(outzip, 'r')

for info in zf.infolist():

fn, dtz = info.filename, info.date_time # , info.file_size

# some zips have dirs listed as files. Catch

# and bypass those.

name = os.path.basename(fn)

if not name:

continue

# get our filename converted from bytes to unicode

fn_uni = fn.decode(ENC, 'replace')

bn_uni = os.path.basename(fn_uni)

# this method is about 15% faster than extractall, and

# preserves modify and access dates

c = zf.open(fn)

outfile = os.path.join(outdir, bn_uni)

# try/except to avoid problems with locked files, etc

# do in chunks to avoid memory problems

chunk = 2**16

try:

with open(outfile, 'wb') as f:

s = c.read(chunk)

f.write(s)

while not len(s) < chunk:

s = c.read(chunk)

f.write(s)

c.close()

# set modify and access dates to that inside the zip

dtout = time.mktime(dtz + (0, 0, -1))

os.utime(outfile, (dtout, dtout))

except IOError:

c.close()

此示例执行zip中的所有文件,但您可以轻松添加几行来检查特定文件.它还将覆盖工作目录中的任何文件,其名称与提取的文件同名.

标签:python,zipfile

来源: https://codeday.me/bug/20190729/1567948.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值