无需压缩软件,用python帮你操作压缩包
写在之前
压缩包是互联网上软件发布的标准格式,同时对于系统管理很有用处。当我们需要将多份文件发送给别人的时候,最好通过压缩包的形式发送,还有在备份某些文件的时候,为了减少磁盘空间的占用,也需要对备份的数据进行压缩。
Python中有一系列对压缩包进行处理的工具,包括创建压缩包,解压压缩包以及获取压缩包中的文件列表等,今天的文章,我们就来学习一下与压缩包相关的Python标准库。
管理zip压缩包
在大多数情况下,我们在Windows下使用zip进行压缩,在Linux下使用gzip或者bzip2进行压缩。这一部分,我们来看一下如何管理zip格式的压缩包。
1.读取zip
Python管理zip主要使用zipfile模块,这个模块里有一个名为ZipFile的对象,我们通过将zip压缩包的名称传递给这个对象的函数,这样就打开了一个zip压缩包并获得一个ZipFile的对象,然后使用这个对象的方法去读取zip压缩包里的内容。具体如下所示:
>>>importzipfile >>>first_zip=zipfile.ZipFile('test.zip') >>>first_zip.namelist()
namelist()是ZipFile中的常用方法,初次以外还比较常用的方法有extract,extractall:
- namelist:返回一个列表,列表中是zip中包含的所有文件和文件夹;
- extract:从zip中提取单个文件
- extarctall:从zip文件中提取所有文件
2.创建zip
与文件的方式类似,如果想要创建一个zip格式的压缩文件,必须要以「写」的模式打开zip文件,需要说一点的是,ZipFile的对象是通过write方法来添加文件的。具体如下所示:
>>>importzipfile >>>my_zip=zipfile.ZipFile('test.zip','w') >>>my_zip.write('test.py') >>>my_zip.close()
上面的代码是创建了一个名为test.zip的新zip文件,它包含test.py压缩后的内容。
管理tar包
tar命令一般是在Linux系统中创建压缩包,并且可以指定压缩包的压缩算法。此外tar命令也可以创建一个不压缩的tar包,仅仅是为了能把多个文件进行打包便于传输。这也就是说,我们在使用tar命令的时候,既可以创建普通的tar包,也可以创建使用压缩算法压缩过的压缩包。
Python中使用tarfile标准库提供了tar命令提供的功能,我们也可以使用它创建一个压缩或者一个非压缩的tar包。我之前很多次说过Python的简洁优雅体现在方方面面,在这里体现在tarfile模块比Linux下的tar命令用起来更加舒服。
1.读取tar包
同样读取tar包和Python的文件管理操作类似,读写一个压缩包,需要执行打开操作,同时指定打开模式,并且在操作完成以后关闭文件,当然在这里我们可以使用上下文管理器来保证文件的关闭逻辑。具体如下所示:
>>>importtarfile >>>withtarfile.open('etc.tar')ast: ...formemberint.getmembers(): ...print(member.name)
上面的代码中,导入tarfile库,使用默认的读模式打开tar包,tarfile.open()函数返回一个TarFile对象,这个对象表示当前打开的tar包,我们可以通过这个对象的方法操作和读取tar包中的内容。
tarfile中有不少函数,其中最常用的有getnames,extract,extractall函数:
- getnames:获取tar包中的文件列表;
- extract:提取单个文件;
- extractall:提取所有文件。
2.创建tar包
从上面的例子中可以看到,读一个tar包与读一个文件类似,都是以「读」的方式打开文件并得到一个对象,然后通过这个对象的方法去操作文件。同样创建一个tar包和写一个文件也比较类似。具体如下所示:
>>>importtarfile >>>withtarfile.open('etc.tar',mode='w')asf: ...f.add('test.py')
上面的代码中,由于我们是创建一个tar包,所以以「写」模式打开tar包并得到一个TarFile对象,然后使用TarFile对象的add方法将test.py文件添加到tar包中。
3.tarfile读取和创建压缩包
上面我们用targfile创建和读取未压缩的tar包,但是一般情况下,我们创建tar包的时候都会使用压缩算法进行压缩,以加快传输速度和减少占用的磁盘空间。
使用tarfile创建和读取压缩包非常简单,只要在打开文件时指定压缩算法即可。对于tarfile的open函数,以「打开模式:压缩算法」的形式打开即可。具体如下所示:
a.读取一个用gzip算法压缩的tar包:
>>>importtarfile >>>withtarfile.open('etc.tar',mode='r:gz')asf:
b.创建一个用bzip2算法压缩的tar包:
>>>importtarfile >>>withtarfile.open('etc.tar',mode='w:bz2')asf:
以上就是无需压缩软件,用python帮你操作压缩包的详细内容,更多关于python压缩包的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。