简 介: 测试了zipfile对于压缩文件的读取和解压过程。

关键词zipfile

#mermaid-svg-ecbGe6YS8fedNEBm {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ecbGe6YS8fedNEBm .error-icon{fill:#552222;}#mermaid-svg-ecbGe6YS8fedNEBm .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ecbGe6YS8fedNEBm .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-ecbGe6YS8fedNEBm .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ecbGe6YS8fedNEBm .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ecbGe6YS8fedNEBm .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ecbGe6YS8fedNEBm .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ecbGe6YS8fedNEBm .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ecbGe6YS8fedNEBm .marker.cross{stroke:#333333;}#mermaid-svg-ecbGe6YS8fedNEBm svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ecbGe6YS8fedNEBm .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ecbGe6YS8fedNEBm .cluster-label text{fill:#333;}#mermaid-svg-ecbGe6YS8fedNEBm .cluster-label span{color:#333;}#mermaid-svg-ecbGe6YS8fedNEBm .label text,#mermaid-svg-ecbGe6YS8fedNEBm span{fill:#333;color:#333;}#mermaid-svg-ecbGe6YS8fedNEBm .node rect,#mermaid-svg-ecbGe6YS8fedNEBm .node circle,#mermaid-svg-ecbGe6YS8fedNEBm .node ellipse,#mermaid-svg-ecbGe6YS8fedNEBm .node polygon,#mermaid-svg-ecbGe6YS8fedNEBm .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ecbGe6YS8fedNEBm .node .label{text-align:center;}#mermaid-svg-ecbGe6YS8fedNEBm .node.clickable{cursor:pointer;}#mermaid-svg-ecbGe6YS8fedNEBm .arrowheadPath{fill:#333333;}#mermaid-svg-ecbGe6YS8fedNEBm .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ecbGe6YS8fedNEBm .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ecbGe6YS8fedNEBm .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-ecbGe6YS8fedNEBm .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-ecbGe6YS8fedNEBm .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ecbGe6YS8fedNEBm .cluster text{fill:#333;}#mermaid-svg-ecbGe6YS8fedNEBm .cluster span{color:#333;}#mermaid-svg-ecbGe6YS8fedNEBm div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ecbGe6YS8fedNEBm :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

压缩文件
目 录
Contents
zipfile操
作压缩文件
判断是否有
效的zipfile
打开ZipFile
关闭ZipFile
抽取文件
抽取所有文件
压缩文件
压缩GIF目
录下的文件
总 结

§01 压缩文件


  为了方便存储于交换文件,很多的数据文件通常以打包压缩的方式进行存储和传送。可以直接使用很多OS中的压缩打包程序完成压缩文件的打包压缩和解压过程。如何在Python下对于这些压缩文件进行存储呢?

1.1 zipfile操作压缩文件

  根据 【python】详解zipfile模块读取处理压缩文件实例 介绍zipfile模块读取 压缩文件的实际操作。

  zipfile是python里用来做zip格式编码的压缩和解压缩的,由于是很常见的zip格式,所以这个模块使用频率也是比较高的。

  下面的实验中,使用压缩有目录:animalfruit 的压缩文件作为练习,其中包含有907张图片。

├─animal
│ ├─cat
│ ├─cow
│ ├─dog
│ ├─horse
│ └─pig
└─fruit
    ├─apple
    ├─banana
    ├─durian
    ├─grape
    └─orange

  zipfile模块常用的一些操作和方法:

1.1.1 判断是否有效的zipfile

_zipfile(filename),测试filename的文件,看它是否是个有效的zipfile

import zipfilezipfilename = '/home/aistudio/data/data120001/FruitAnimal.zip'
print(zipfile.is_zipfile(zipfilename))

True

1.1.2 打开ZipFile

  ZipFile(filename[,mode[,compression[,allowZip64]]])

  • filename:文件对象;例如:’xxx.zip’
  • mode:可选r,w,a代表不同的打开文件的方式;r只读;w重写;a添加;
  • compression:指出这个zipfile用什么压缩方法,默认是ZIP_STORED,另一种选择是ZIP_DEFLATED;
  • allowZip64:是个bool型变量,当设置为True的时候就是说可以用来创建大小大于2G的zip文件,默认值是True
zfile = zipfile.ZipFile(zipfilename, 'r')
print(zfile)
<zipfile.ZipFile filename='/home/aistudio/data/data120001/FruitAnimal.zip' mode='r'>

(1)infolist

with zipfile.ZipFile(zipfilename, 'r') as zfile:print(zfile.infolist())

▲ 图1.1.1 infolist显示的信息

(2)namelist

with zipfile.ZipFile(zipfilename, 'r') as zfile:nl = zfile.namelist()il = zfile.infolist()print(nl)

▲ 图1.1.2 namelist显示的信息

1.1.3 关闭ZipFile

  z.close(),关闭文件,结束时必须要有。

zfile.close()
print(zfile)

<zipfile.ZipFile [closed]>

1.1.4 抽取文件

  z.extract(member, path=None, pwd=None),从zip中提取一个文件。

  • member可以是namelist中的某个文件,也可以从z.infolist 中得到filename,将它放到指定的path下,
  • pwd是密码,用于被加密的zip文件;
  • 如果path没有指定,比如在脚本ipython下运行,会提取保存在脚本默认根目录下,生成test_file文件,并提取出a.text文件保存在文件夹里;
with zipfile.ZipFile(zipfilename, 'r') as zfile:nl = zfile.namelist()il = zfile.infolist()for id,l in enumerate(nl):zfile.extract(l, path=outpath)print(l)

fruit/
fruit/apple/
fruit/apple/01.png
fruit/apple/02.png
fruit/apple/03.png
fruit/apple/04.png
fruit/apple/05.png
fruit/apple/06.png
fruit/apple/07.png
fruit/apple/08.png
fruit/apple/09.png

  需要注意: 在namelist中不仅仅保存了文件名称,而且也保存了子目录的名称。在解压缩过程中,需要按照namelist的目录和文件名称的顺序进行解压缩。也就是在文件解压缩之前,前面的目录也应该被正确的解压缩,否则输出的文件可能没有对应的正确的目录。

1.1.5 抽取所有文件

with zipfile.ZipFile(zipfilename, 'r') as zfile:zfile.extractall(outpath)

  运行之后,压缩文件中的所有文件都在Python文件当前目录下加压缩。

  这个语句相当于前面extract函数执行完全不动作。

压缩文件

根据 【python】详解zipfile模块读取处理压缩文件实例 介绍使用zipfile压缩选取的文件。

压缩GIF目录下的文件

压缩代码

gifdir = '/home/aistudio/GIF'filedim = os.listdir(gifdir)outfile = '/home/aistudio/gif.zip'with zipfile.ZipFile(outfile, 'w') as f:for fn in filedim:f.write(os.path.join(gifdir, fn))print("Compress GIF into gif.zip.")

▲ 图 Sint 图片

※ 总  结 ※


  测试了zipfile对于压缩文件的读取和解压过程。

下面代码是对上载到data中的famnist.zip加压缩到data中。

import sys,os,math,time
import matplotlib.pyplot as plt
from numpy import *
import zipfilefilename = '/home/aistudio/data/famnist.zip'
outpath = '/home/aistudio/data'with zipfile.ZipFile(filename) as zfile:zfile.extractall(outpath)print("Zip file extract to dir : %s"%outpath)

■ 相关文献链接:

  • 【python】详解zipfile模块读取处理压缩文件实例

● 相关图表链接:

  • 图1.1.1 infolist显示的信息
  • 图1.1.2 namelist显示的信息

Python中读取ZIP文件相关推荐

  1. 如何在Python中读取属性文件?

    We can use jproperties module to read properties file in Python. A properties file contains key-valu ...

  2. 如何在 R 中读取 Zip 文件

    您可以使用以下基本语法将 ZIP 文件读入 R: library(readr)#import data1.csv located within my_data.zip df <- read_cs ...

  3. 在python中读取npz文件

    import numpy as npnpz_path="D:\\NER-Research\\CLUENER2020\\BiLSTM-CRF\\data\\clue\\train.npz&qu ...

  4. 如何在 Python 中读取 .data 文件?

    什么是 .data 文件? 创建.data文件是为了存储信息/数据. 此格式的数据通常以逗号分隔值格式或制表符分隔值格式放置. 除此之外,该文件可以是二进制或文本文件格式.在这种情况下,我们将不得不找 ...

  5. python打开zip文件_如何从Python中的zip文件中读取?

    我有一个我想要阅读的文件本身是压缩在一个zip档案.例如,parent.zip包含child.zip,其中包含child.txt.我在阅读child.zip时遇到麻烦.有人可以修改我的代码吗? 我假设 ...

  6. float在python_如何在python中读取.float文件? - python

    Improve this question 我正在处理大脑MRI数据,它是.float数据. 您知道如何在python中使用它吗? 与 with open('[43x25520].float') as ...

  7. linux用户读取文件过程,Python中读取写入文件并进行文件与用户交互的操作

    一.提前知识点 在Python中是同样和其他语言一样可以进行文件的读取写入操作,值得注意的是,Python中打开文件读取的方式有几种,分别是以下几种: f = open('username.txt') ...

  8. Python中读取excel文件中长数字变成科学记数法的解决方法

    因为要进行数据处理,涉及到身份证信息这种长数字的数据,excel直接就将长数字都整成科学记数法了,很明显,这样根本不行,于是我们就需要将其转换成字符串完整显示才行,于是我看了我手上的数据中,身份证那一 ...

  9. Python中读取txt文件的三种可行办法

    DataTest.txt中的文件内容,文件最后尽量不要留空行,否则有的时候会出现error 1,2,3 4,5,6 7,8,9 第一种方式:使用 csv.reader()读取txt文件 import ...

最新文章

  1. Redis未授权访问写Webshell和公私钥认证获取root权限
  2. linux系统常用快捷键,文件类型,后缀名,语言修改,转义
  3. 小鑫の日常系列故事(十)——排名次_JAVA
  4. core::demangled_name的测试程序
  5. Laravel安装步骤
  6. gpio_direction_output 与 gpio_set_value
  7. Cheatsheet: 2013 09.10 ~ 09.21
  8. 数据流程图顶层一层二层_只需三个公式,三阶魔方超简单入门图文教程5:完全复原第二层...
  9. Java Throwable setStackTrace()方法与示例
  10. 机房布线的最高境界 | 最后的暗黑系,真是亮瞎眼 ​
  11. linux管理员清理主目录,在Linux上如何清理垃圾系统管理员
  12. cocos2d-x学习笔记07:在cocos2d-x中使用RTTI
  13. 基于RV1126平台imx291分析 --- mipi-csi-phy注册
  14. Gateway服务网关
  15. 深度学习之 7 深度前馈网络
  16. php开发桌面应用程序_使用PHP开发跨平台桌面应用程序的3种方法
  17. 字体图标 fa fa html5,Font Awesome 4.2.0的所有图标参考
  18. 链表实现电话簿(C++)
  19. 风控人都在夸交通出行数据好用,那就来看看如何挖掘与应用此类数据
  20. java面试的一些流程问题

热门文章

  1. 【博客美化】评论带头像,且支持旋转
  2. ehcache.xsd
  3. Android Studio 第一次配置及其使用
  4. qtcreator cannot find -lts
  5. 从指纹到眼球识别:漫谈手机安全方案
  6. 卸载ORACLE 11g
  7. linux c++编写访问mysql程序,访问数据库出错,解决方法
  8. Js实现点击超链接弹出层,效果仿Discuz登录!
  9. [MOSS 译]如何:在WEB内容查询部件中使用自定义的字段
  10. Html2excel 1.4.1 发布,Html 转 Excel 工具包