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’) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?