1. 程式人生 > 實用技巧 >Python Linux系統管理之使用Python管理壓縮包

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