使用python展开tar包

liftword3个月前 (03-06)技术文章21

类Unix的系统,打包文件经常使用的就是tar包,结合zip工具,可以方便的打包并解压。

在python的标准库里面有tarfile库,可以方便实现生成了展开tar包。使用这个库最大的好处,可能就在于不需要使用外部的程序调用来实现展开tar包。要知道subprocess库的使用看似简单,但是真要处理异常,还是比较麻烦的事。

tarfile.open()函数可以返回一个TarFile对象,同样实现了ContextManager接口,你可以使用with语句。

首先可以使用list()方法,打印输出包里面的内容。

对于程序来说,这个基本没有什么用,但是用于调试查看还是不错的。


接着是提取文件,extractall()可以提取所有文件到指定文件夹:


以下代码提取所有文件到extracted子目录

TarFile实现了next()方法,也就是可以使用for in语句进行遍历,返回的对象是TarInfo类型:


当然也可以解压单个文件,使用extract()方法,可以传入一个TarInfo实例,也可以传入路径的字符串。下面代码遍历传入TarInfo,展开到extracted2目录。后面一部分实例使用字符串,展开到extracted3目录。

extract函数有个缺点,就是没有办法用另一个文件名进行展开,只能使用extractfile返回的内容,写入另外一个已打开的文件,希望以后能直接提供这个功能。

相关文章

pyinstaller打包python程序高级技巧

pyinstaller是最常用的python程序打包成可执行程序(exe)的工具,这篇文章将介绍几个pyinstaller打包可能遇到的问题及其解决方法。安装pyinstaller的安装很简单,直接p...

python散装笔记——81: PyPI 软件包管理器: pip 模块的使用

有时,您可能需要在 python 中使用 pip 包管理器,例如,当某些导入可能引发 ImportError 时,您需要处理异常。如果在 Windows 上解压缩,Python_root/Script...

使用 Python 让旧照片修复清晰

翻开家里的的相片册,可以看到每张照片都是那么的弥足珍贵,特别是很久以前的照片,都是美好的回忆,还有那些年错过的场景,都被记录下来了,不过可惜的是,随着时间的流逝,照片可能泛黄,出现划痕,画质损失等等,...

程序员调查 :程序员有哪些解压的方法

总所周知,想到程序员就想到的词有秃头、地中海、格子衫、死宅等等等等形象较差的词。这是为啥呢?程序员的鸭梨山大啊!不掉头发能行吗?作为一个入行很久的老手,刚进入咱们这个行业的实习生问我:“前辈,程序员压...

学会这20个python小技巧,减少一半的工作量

1.用itertools排列在这个程序中,我们导入了名为 itertools 的内置模块。使用 itertools,您可以找到给定字符串的所有排列。在 itertools 中有很多方法,您可以尝试组合...