我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python 解压缩文件详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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 一个例子:

压缩目录如下:
Python 解压缩文件详解

代码实现:

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()

进入目录解压,文件路径如下:
Python 解压缩文件详解
可以看到,我们将整个目录添加到压缩文件中,其实我们更想做的是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()

压缩之后,解压缩内容:
Python 解压缩文件详解
这个才是我们想要的。

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类似,内容如下:

[<ZipInfo filename='logs/1003.log' compress_type=deflate filemode='-rw-r--r--' file_size=17 compress_size=17>,
 <ZipInfo filename='logs/1001.log' compress_type=deflate filemode='-rw-r--r--' file_size=17 compress_size=17>,
 <ZipInfo filename='logs/1004.log' compress_type=deflate filemode='-rw-r--r--' file_size=17 compress_size=17>,
 <ZipInfo filename='logs/1002.log' compress_type=deflate filemode='-rw-r--r--' file_size=17 compress_size=17>,
 <ZipInfo filename='logs/1000.log' compress_type=deflate filemode='-rw-r--r--' file_size=17 compress_size=17>]

frzip.getinfo(name):获取指定arcname的信息:

frzip.getinfo('logs/1003.log')
#输出结果:
<ZipInfo filename='logs/1003.log' compress_type=deflate filemode='-rw-r--r--' file_size=17 compress_size=17>

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;
这些模块使用方式都类似,后面文章中我们在详解讲解。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python 解压缩文件详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python 解压缩文件详解

zipfile模块及相关方法介绍:1 压缩1.1 创建zipfile对象zipfile.ZipFile(file, mode='r', compression=0, allowZip64=True, compresslevel=None)创
2023-01-31

详解Linux解压缩文件

gzip 压缩:gzip -v 文件(夹) eg: gzip -v b.log ----> b.log.gz gzip -c 文件(夹) > 文件(夹).gz eg: gzip -c b.log > b.lo
2022-06-04

Python压缩/解压gzip大文件

Code tells all:#encoding=utf-8#author: walker#date: 2015-10-26#summary: 测试gzip压缩/解压文件import gzip  BufSize = 1024*8      
2023-01-31

Java压缩文件操作详解

这篇文章主要为大家详细介绍了如何利用Java语言进行压缩文件操作,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
2022-11-13

Python压缩解压缩zip文件及破解zip文件密码的方法

python 的 zipfile 提供了非常便捷的方法来压缩和解压 zip 文件。 例如,在py脚本所在目录中,有如下文件:readability/readability.js readability/readability.txt rea
2022-06-04

怎样用Python解压缩*.tgz文件

怎样用Python解压缩*.tgz文件KnightPython:正如*大熊*所说,使用tarfile模块即可:import tarfiletarobj = tarfile.open("my_backup_file.tgz", "r:gz")
2023-01-31

linux压缩文件和文件解压缩命令介绍

目录常见压缩格式:gz .bz2 .xz .zip常用归档调用压缩压缩比及压缩速度:gzip命令:压缩查看压缩文件:gunzip命令:解压bzip2:命令压缩查看压缩文件bunzip2命令:解压xz命令:压缩查看压缩文件unxz命令:解压压
2022-06-04

Linux文件压缩和解压缩的命令

本篇内容介绍了“Linux文件压缩和解压缩的命令”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、tar:tar命令:tar [选项...]
2023-06-13

python解压缩文件怎么实现

可以使用Python中的zipfile模块来解压缩文件。下面是一个简单的示例代码:import zipfiledef unzip_file(zip_file, extract_dir):with zipfile.ZipFile(zip_f
python解压缩文件怎么实现
2024-03-06

详解Python如何实现压缩与解压缩数据

本篇教程详细介绍了Python中压缩和解压缩数据的技术。压缩:gzip模块:简单易用,适用于一般数据压缩。zlib模块:高级API,支持不同压缩级别和算法。第三方库:Brotli(高效无损)和LZ4(快速低内存)可提供更好的压缩率。解压缩:压缩模块通常也提供解压缩功能,如gzip.open()。文件对象和IOBuffer可用于直接解压缩压缩文件。通过使用这些工具,开发者可以优化数据存储和传输,满足不同的压缩和解压缩需求。
详解Python如何实现压缩与解压缩数据
2024-04-02

Python怎么批量解压和压缩文件夹

这篇文章主要介绍“Python怎么批量解压和压缩文件夹”,在日常操作中,相信很多人在Python怎么批量解压和压缩文件夹问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python怎么批量解压和压缩文件夹”的疑
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录