天天看點

python 實作将檔案或檔案夾用相對路徑打包為 tar.gz 檔案

預設情況下,tarfile 打包成的 tar.gz 檔案會帶絕對路徑,而很多情況下,我們需要的是相對打封包件夾的路徑。

代碼:

<pre name="code" class="python"><span style="font-size:18px;">import tarfile
tmp_tar_dir = "/home"
file_name = "test.tar.gz"
tmp_dir = "/home/centos"
soft_name = "php"
tar = tarfile.open(os.path.join(tmp_tar_dir,file_name),"w:gz")
for root,dir,files in os.walk(os.path.join(tmp_dir,soft_name)):
    root_ = os.path.relpath(root,start=tmp_dir)
    #tar.add(root,arcname=root_)
    for file in files:
        full_path = os.path.join(root,file)
        tar.add(full_path,arcname=os.path.join(root_,file))
tar.close()</span>
           

注意:打包出來的檔案,如果原目錄總存在空檔案夾,則打包出來的檔案中不包含此空檔案夾。