python读取rar文件_Python 解压缩文件详解!
zipfile模块及相关方法介绍:
1 压缩
1.1 创建zipfile对象
zipfile.ZipFile(file, mode='r', compression=0, allowZip64=True, compresslevel=None)
创建Zipfile对象,主要参数:
1>file压缩包名称;
2>mode:读'r'或者写'w'模式;
3>compression:设置压缩格式;
4>compresslevel:压缩等级;
压缩格式分类:
格式 说明 对应compresslevel ZIP_STORED 不压缩 无效 ZIP_DEFLATED 需要zlib支持 0~9 ZIP_BZIP2 需要bz2支持 0~9 ZIP_LZMA 需要lzma支持 无效 1.2 添加压缩文件
zipobj.write(self, filename, arcname=None, compress_type=None, compresslevel=None)
参数说明:
1>fiename:添加文件路径;
2>arcname:归档文件路径与名称;
1.3 添加压缩数据
zipobj.writestr(zinfo_or_arcname, data, compress_type=None, compresslevel=None)
参数说明:
1>zinfo_or_arcname:归档文件名称;
2>data:压缩数据str或者byte,如果数据为str,需要先进行Utf-8编码;
1.4 关闭
关闭压缩文件:
zipobj.close()
1.5 一个例子:
压缩目录如下:
代码实现:
import zipfile logdir = '/home/linux/logs' zipname = '/home/linux/logs.zip' #创建zip对象, fzip = zipfile.ZipFile(zipname, 'w', zipfile.ZIP_DEFLATED) #遍历要压缩目录 flist = os.listdir(logdir) for name in flist: fpath = os.path.join(logdir, name) #写入要压缩文件 fzip.write(fpath) #关闭 fzip.close()
进入目录解压,文件路径如下:
可以看到,我们将整个目录添加到压缩文件中,其实我们更想做的是logs/*.log;
对代码进行修改:
logdir = '/home/linux/logs' zipname = '/home/linux/logs.zip' import zipfile #创建zip对象, fzip = zipfile.ZipFile(zipname, 'w', zipfile.ZIP_DEFLATED) #遍历要压缩目录 flist = os.listdir(logdir) #获取压缩目录名称 basename = os.path.basename(logdir) for name in flist: fpath = os.path.join(logdir, name) arcname = os.path.join(basename, name) #写入要压缩文件,并添加归档文件名称 fzip.write(fpath, arcname=arcname) #关闭 fzip.close()
压缩之后,解压缩内容:
这个才是我们想要的。
2.获取压缩包信息
打开压缩包:
frzip = zipfile.ZipFile(zipname, 'r', zipfile.ZIP_DEFLATED):只读方式打开;
frzip.printdir(),显示压缩包文件信息
File Name Modified Size logs/1003.log 2019-04-09 10:00:10 17 logs/1001.log 2019-04-09 10:00:06 17 logs/1004.log 2019-04-09 10:00:12 17 logs/1002.log 2019-04-09 10:00:08 17 logs/1000.log 2019-04-09 10:00:04 17
frzip.filelist:记录压缩包文件信息,与printdir类似,内容如下:
[, , , , ]
frzip.getinfo(name):获取指定arcname的信息:
frzip.getinfo('logs/1003.log') #输出结果:
frzip.namelist():获取压缩文件列表
['logs/1003.log', 'logs/1001.log', 'logs/1004.log', 'logs/1002.log', 'logs/1000.log']
3 解压压缩包
frzip.extract(member, path=None, pwd=None):解压缩一个文件到指定目录;
参数:
member:压缩包中文件;
path:解压缩到指定目录,默认解压到当前目录;
frzip.extractall(path=None, members=None, pwd=None):解压缩多个文件到指定目录;
参数:
path:指定的解压目录;
members:指定解压文件,默认解压全部;
解压指定文件到指定目录:
#可以自己定义路径 zipname = '/home/linux/logs.zip' extractpath = '/home/linux/1' #注意压缩格式选择 frzip = zipfile.ZipFile(zipname, 'r', zipfile.ZIP_DEFLATED) extractfile = frzip.namelist() if len(extractfile): extname = extractfile[0] print('extract file:', extname) frzip.extract(extractfile[0], extractpath) frzip.close()
输出结果:extract file: logs/1003.log,在extractpath目录下有log文件;
使用frzip.extractall将所有文件解压到指定目录:
#可以自己定义路径 zipname = '/home/linux/logs.zip' extractpath = '/home/linux/1' #注意压缩格式选择 frzip = zipfile.ZipFile(zipname, 'r', zipfile.ZIP_DEFLATED) #将所有文件加压缩到指定目录 frzip.extractall(extractpath) frzip.close()
除了zipfile还有其它模块:
import gzip;
import tarfile;
这些模块使用方式都类似,后面文章中我们在详解讲解。
python读取rar文件_Python 解压缩文件详解!相关推荐
- python开发的程序中以电子表格显示数据_使用 Python 读取电子表格中的数据实例详解...
Python 是最流行.功能最强大的编程语言之一.由于它是自由开源的,因此每个人都可以使用.大多数 Fedora 系统都已安装了该语言.Python 可用于多种任务,其中包括处理逗号分隔值(CSV)数 ...
- python菜单怎么做_Python 城市菜单详解(超详解)
print("--------城市查询系统---------") print("--------按数值进行查询--------") menu={"内蒙 ...
- python 解压zip文件_Python 解压缩文件详解
zipfile模块及相关方法介绍: 1 压缩 1.1 创建zipfile对象 zipfile.ZipFile(file, mode='r', compression=0, allowZip64=Tru ...
- python读取坐标文本文件_Python 实现文件读写、坐标寻址、查找替换功能
读文件 打开文件(文件需要存在) #打开文件 f = open("data.txt","r") #设置文件对象 print(f)#文件句柄 f.close() ...
- python导入模块语句_python 模块导入详解
本文不讨论 Python 的导入机制(底层实现细节),仅讨论模块与包,以及导入语句相关的概念.通常,导入模块都是使用如下语句: import...import... as ...from ... im ...
- Python读取CIFAR10数据集,附代码详解
Python读取CIFAR10数据集 初次接触机器学习,用到的第一个数据集就是CIFAR10.这是一个小型数据集.一共包含 10 个类别的 RGB 彩色图 片:飞机( airplane ).汽车( a ...
- python怎么看内置模块_Python的内置模块详解
一.什么是模块 模块就是封装了一些列功能的py文件,我们使用的时候直接导入这个文件,通过传入参数的方式使用其他文件的功能函数 二.模块有哪些 内置模块 自定义模块 第三方模块 三.如何导入模块 导入模 ...
- python集合的操作_Python集合操作方法详解
集合是无序的,天生不重复的数据组合,它的作用如下: 去重,即:把一个列表变成集合,就去重了 关系测试,即:测试两组集合的交集.并集和差集等 一.集合常用方法总结 二.定义 1.语法 >>& ...
- python中递归函数写法_python递归函数用法详解
上期我们介绍了函数式编程,这期内容就是关于递归的函数内容,本期还是按照老规矩,给大家进行核心整理,内容通俗易懂,搭配实际应用,以供大家理解. 关于递归: 百度解释:是指函数/过程/子程序在运行过程序中 ...
- python指定变量类型_Python 变量类型详解
变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据类型,这些变量可以存储整 ...
最新文章
- Java与UML交互图
- python opencv 图像旋转
- 盘点《头号玩家》里的 VR 技术,现在就能造个 Oasis 出来
- C++11 类型推导decltype
- windows server 2003 DNS 细谈系列之(二)记录类型、数据库
- ecshop 去除前台模板自动解析CSS/JS/IMG路径
- 【FI学习笔记】客户发票收款清账
- Mysql安装问题汇总
- (装载)C#中AppDomain.CurrentDomain.BaseDirectory与Application.StartupPath的区别
- (一)FlexViewer之整体框架解析
- mysql 字符串截取_mysql数据库13种常用函数方法总结
- Windows Server 2003 AD域升级至Windows Server 2008 R2实战案例
- 转:awakeFromNib/loadView/viewDidLoad总结
- ntpdate 时间同步
- 方差分析软件_手把手教你用Graphpad做单因素方差分析
- java获取机器序列号_Java后台实现查询电脑本机CPU序列号工具类
- 超酷的iOS动画集合
- 小程序毕设作品之微信评选投票小程序毕业设计(1)开发概要
- 计算机教室布置软木,软木照片墙布置,让孩子体验手工的乐趣
- 月入5万的程序员,日子过得就像月薪5000