Python Linux系统管理之使用Python管理压缩包

一、使用tarfile库读取与创建tar包

0、先创建一些测试文件

touch {1..2}.txt

1、创建压缩包

复制代码
In [7]: import tarfile 
In [9]: with tarfile.open('demo.tar',mode='w') as out: 
   ...:     out.add('1.txt') 
   ...:     out.add('2.txt') 
   ...:                                                                                                                                                                 
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-9-0c341d269b4b> in <module>
      1 with tarfile.open('demo.tar',mode='w') as out:
----> 2     out.add('1.txt')
      3     out.add('2.txt')
      4 
# 最后一空行直接回车即可
复制代码

2、读取tar包

In [3]: with tarfile.open(‘demo.tar’) as t:
…: for file in t.getmembers():

 

…: print(file.name)

…:

1.txt

2.txt

3、创建压缩包

with tarfile.open(‘demo.tar.gz’,mode=’w:gz’) as out:
…: out.add(‘1.txt’)

 

…: out.add(‘2.txt’)

…:

4、读取压缩包

In [6]: with tarfile.open(‘demo.tar.gz’,mode=’r:gz’) as out:
…: for f in out.getmembers():

 

…: print(f.name)

…:

1.txt

2.txt

5、提取单个或者所有文件

In [14]: with tarfile.open(‘demo.tar.gz’,mode=’r:gz’) as out:
…: out.extract(‘1.txt’)

 

…:

In [15]: ls

1.txt anaconda-ks.cfg demo.tar demo.tar.gz

In [16]: with tarfile.open(‘demo.tar.gz’,mode=’r:gz’) as out:

…: out.extractall()

…:

In [17]: ls

1.txt 2.txt anaconda-ks.cfg demo.tar demo.tar.gz

二、使用zipfile库创建和读取压缩包

1、创建zip文件

In [1]: import zipfile
In [2]: newZip = zipfile.ZipFile(‘demo.zip’,’w’)

 

In [3]: newZip.write(‘1.txt’)

In [4]: newZip.write(‘2.txt’)

In [5]: newZip.close()

In [6]: ls

1.txt 2.txt anaconda-ks.cfg demo.tar demo.tar.gz demo.zip

2、读取zip文件

In [7]: newZip = zipfile.ZipFile(‘demo.zip’)
In [8]: newZip.namelist()

 

Out[8]: [‘1.txt’, ‘2.txt’]

3、解压zip文件

In [12]: newZip.extract(‘1.txt’)
Out[12]: ‘/root/1.txt’

 

In [13]: newZip.extractall()

In [14]: ls

1.txt 2.txt anaconda-ks.cfg demo.tar demo.tar.gz demo.zip

三、使用shutil管理压缩包

In [1]: import shutil
In [2]: shutil.make_archive(‘demo’,’zip’)

 

Out[2]: ‘demo.zip’

In [3]: shutil.make_archive(‘demo’,’gztar’)

Out[3]: ‘demo.tar.gz’

In [4]: shutil.unpack_archive(‘demo.tar.gz’)

In [5]: shutil.unpack_archive(‘demo.zip’)

 

posted @   星火撩原  阅读(210)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示