Python:将文件解压缩到当前工作目录,但不保存zip中的目录结构
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python:将文件解压缩到当前工作目录,但不保存zip中的目录结构,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1521字,纯文字阅读大概需要3分钟。
内容图文
![Python:将文件解压缩到当前工作目录,但不保存zip中的目录结构](/upload/InfoBanner/zyjiaocheng/744/8601479a7aea419cb5dd9a75cf0d116b.jpg)
我有一个像这样的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:将文件解压缩到当前工作目录,但不保存zip中的目录结构全部内容,希望文章能够帮你解决Python:将文件解压缩到当前工作目录,但不保存zip中的目录结构所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。