千家信息网

Python怎样解压缩文件

发表于:2025-02-09 作者:千家信息网编辑
千家信息网最后更新 2025年02月09日,这篇文章主要介绍了Python怎样解压缩文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1 压缩1.1 创建zipfile对象zip
千家信息网最后更新 2025年02月09日Python怎样解压缩文件

这篇文章主要介绍了Python怎样解压缩文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

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 zipfilelogdir = '/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             Sizelogs/1003.log                                  2019-04-09 10:00:10           17logs/1001.log                                  2019-04-09 10:00:06           17logs/1004.log                                  2019-04-09 10:00:12           17logs/1002.log                                  2019-04-09 10:00:08           17logs/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怎样解压缩文件"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

文件 目录 参数 名称 格式 路径 信息 对象 篇文章 支持 数据 代码 内容 方式 模块 结果 输出 选择 下有 价值 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 如何加强民众网络安全意识 康佳社招软件开发工资多少 重庆市弹子石软件开发公司 网络安全教育 大学生 天津时代网络技术分类设计 敏捷软件开发的四项核心原则 学校机房使用的网络技术是什么 深挖网络安全生产 广州有那家软件开发公司吗 大观中学生网络安全宣传 西瓜视频服务器地址在哪儿搜索 关于关系数据库技术 江苏工业网络技术价目表 零基础做网络安全 科研项目评审系统数据库课设 租用远程服务器贵吗 腾讯服务器怎么找回手机数据 vc数据库要怎样才能编程 ensp如何ping通服务器 数据库库锁机制 广东app软件开发价格表 制图教程软件开发 ff14服务器错误3087 征信公司软件开发 南京软件开发工程师招聘信息 我的世界国际版服务器怎么弄中文 战地5高级搜索找不到服务器 服务器一般用几年 甘肃语音网络技术服务咨询报价 服务器管理线路
0