Python中读取ZIP文件
简 介: 测试了zipfile对于压缩文件的读取和解压过程。
关键词
: zipfile
Contents
作压缩文件
效的zipfile
录下的文件
§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文件相关推荐
- 如何在Python中读取属性文件?
We can use jproperties module to read properties file in Python. A properties file contains key-valu ...
- 如何在 R 中读取 Zip 文件
您可以使用以下基本语法将 ZIP 文件读入 R: library(readr)#import data1.csv located within my_data.zip df <- read_cs ...
- 在python中读取npz文件
import numpy as npnpz_path="D:\\NER-Research\\CLUENER2020\\BiLSTM-CRF\\data\\clue\\train.npz&qu ...
- 如何在 Python 中读取 .data 文件?
什么是 .data 文件? 创建.data文件是为了存储信息/数据. 此格式的数据通常以逗号分隔值格式或制表符分隔值格式放置. 除此之外,该文件可以是二进制或文本文件格式.在这种情况下,我们将不得不找 ...
- python打开zip文件_如何从Python中的zip文件中读取?
我有一个我想要阅读的文件本身是压缩在一个zip档案.例如,parent.zip包含child.zip,其中包含child.txt.我在阅读child.zip时遇到麻烦.有人可以修改我的代码吗? 我假设 ...
- float在python_如何在python中读取.float文件? - python
Improve this question 我正在处理大脑MRI数据,它是.float数据. 您知道如何在python中使用它吗? 与 with open('[43x25520].float') as ...
- linux用户读取文件过程,Python中读取写入文件并进行文件与用户交互的操作
一.提前知识点 在Python中是同样和其他语言一样可以进行文件的读取写入操作,值得注意的是,Python中打开文件读取的方式有几种,分别是以下几种: f = open('username.txt') ...
- Python中读取excel文件中长数字变成科学记数法的解决方法
因为要进行数据处理,涉及到身份证信息这种长数字的数据,excel直接就将长数字都整成科学记数法了,很明显,这样根本不行,于是我们就需要将其转换成字符串完整显示才行,于是我看了我手上的数据中,身份证那一 ...
- Python中读取txt文件的三种可行办法
DataTest.txt中的文件内容,文件最后尽量不要留空行,否则有的时候会出现error 1,2,3 4,5,6 7,8,9 第一种方式:使用 csv.reader()读取txt文件 import ...
最新文章
- Redis未授权访问写Webshell和公私钥认证获取root权限
- linux系统常用快捷键,文件类型,后缀名,语言修改,转义
- 小鑫の日常系列故事(十)——排名次_JAVA
- core::demangled_name的测试程序
- Laravel安装步骤
- gpio_direction_output 与 gpio_set_value
- Cheatsheet: 2013 09.10 ~ 09.21
- 数据流程图顶层一层二层_只需三个公式,三阶魔方超简单入门图文教程5:完全复原第二层...
- Java Throwable setStackTrace()方法与示例
- 机房布线的最高境界 | 最后的暗黑系,真是亮瞎眼 ​
- linux管理员清理主目录,在Linux上如何清理垃圾系统管理员
- cocos2d-x学习笔记07:在cocos2d-x中使用RTTI
- 基于RV1126平台imx291分析 --- mipi-csi-phy注册
- Gateway服务网关
- 深度学习之 7 深度前馈网络
- php开发桌面应用程序_使用PHP开发跨平台桌面应用程序的3种方法
- 字体图标 fa fa html5,Font Awesome 4.2.0的所有图标参考
- 链表实现电话簿(C++)
- 风控人都在夸交通出行数据好用,那就来看看如何挖掘与应用此类数据
- java面试的一些流程问题