热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Python解压缩文件详解

本文由编程笔记#小编为大家整理,主要介绍了Python解压缩文件详解相关的知识,希望对你有一定的参考价值。zipfile模块及相关方法介绍:1压缩
本文由编程笔记#小编为大家整理,主要介绍了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;
这些模块使用方式都类似,后面文章中我们在详解讲解。


推荐阅读
  • 在CentOS 7中部署Nginx并配置SSL证书
    本文详细介绍了如何在CentOS 7操作系统上安装Nginx服务器,并配置SSL证书以增强网站的安全性。适合初学者和中级用户参考。 ... [详细]
  • 本文记录了作者在尝试启用IIS的Gzip压缩功能时遇到的挑战,特别是当企业内部网络使用ISA服务器作为代理时的问题。文章详细描述了问题的发现过程、解决步骤以及最终的解决方案。 ... [详细]
  • OpenCV—python 角点特征检测之一(cornerHarris、ShiTomasi、FAST)
    OpenCV—python角点特征检测之一(cornerHarris、Shi-Tomasi、FAST),Go语言社区,Golang程序员人脉社 ... [详细]
  • 本文探讨了为何在Linux系统上进行项目开发的重要性,并详细介绍了如何在Ubuntu系统上安装PyCharm这一流行的Python集成开发环境(IDE)。通过本文,您将了解在Linux环境下进行Python开发的优势及具体安装步骤。 ... [详细]
  • 本文档提供了详细的MySQL安装步骤,包括解压安装文件、选择安装类型、配置MySQL服务以及设置管理员密码等关键环节,帮助用户顺利完成MySQL的安装。 ... [详细]
  • 本文详细介绍了如何使用 Python 编程语言中的 Scapy 库执行 DNS 欺骗攻击,包括必要的软件安装、攻击流程及代码示例。 ... [详细]
  • 本文详细介绍了如何在PHP中使用Memcached进行数据缓存,包括服务器连接、数据操作、高级功能等。 ... [详细]
  • Python网络编程:深入探讨TCP粘包问题及解决方案
    本文详细探讨了TCP协议下的粘包现象及其产生的原因,并提供了通过自定义报头解决粘包问题的具体实现方案。同时,对比了TCP与UDP协议在数据传输上的不同特性。 ... [详细]
  • 当Ubuntu虚拟机的存储空间不足时,可以通过VMware轻松地为其添加新的硬盘。本文详细介绍了从关闭虚拟机、添加新硬盘到分区、格式化及挂载整个过程的操作步骤。 ... [详细]
  • 转载自:https:blog.csdn.netu013948858articledetails77800663【python】pip安装报错UnicodeDecode ... [详细]
  • 解决Python3中TypeError: can't concat str to bytes问题
    本文介绍了如何在Python3中解决尝试将字符串(str)与字节(bytes)类型进行连接时出现的TypeError错误,通过使用encode()方法将字符串转换为字节类型。 ... [详细]
  • CentOS 7 实验记录:解决磁盘故障案例分析
    本文详细记录了一次在 CentOS 7 系统上遇到的磁盘故障处理过程,主要探讨了因额外磁盘缺失但 fstab 文件中仍保留其挂载配置而导致的问题,并提供了具体的解决方案。 ... [详细]
  • 本文总结了在多人协作开发环境中使用 Git 时常见的问题及其解决方案,包括错误合并分支的处理、使用 SourceTree 查找问题提交、Git 自动生成的提交信息解释、删除远程仓库文件夹而不删除本地文件的方法、合并冲突时的注意事项以及如何将多个提交合并为一个。 ... [详细]
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
  • 本文探讨了在 Python 2.7 环境下,如何有效地对大量数据(如几百 KB 的字符串)进行加密和压缩,并确保能够准确无误地解密回原始数据。 ... [详细]
author-avatar
手机用户2602914917
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有