如今有一個目錄,須要將此目錄打包成tar.gz文件。由於有一個Django項目,須要用到此功能!html
目錄結構以下:python
./ ├── folder │ ├── 1.doc │ └── 2.txt └── packing.py
packing.py 是python程序,須要將folder目錄打包成tar.gz文件ide
packing.py 內容以下:工具
#!/usr/bin/env python3 # coding: utf-8 import os, tarfile def make_targz(output_filename, source_dir): """ 一次性打包目錄爲tar.gz :param output_filename: 壓縮文件名 :param source_dir: 須要打包的目錄 :return: bool """ try: with tarfile.open(output_filename, "w:gz") as tar: tar.add(source_dir, arcname=os.path.basename(source_dir)) return True except Exception as e: print(e) return False make_targz('aa.tar.gz','folder')
注意:動畫
空子目錄會被打包,若是隻打包不壓縮,將"w:gz"參數改成"w:"或"w"便可。ui
執行程序,會在當前目錄下生成aa.tar.gz文件 spa
def untar(fname, dirs): """ 解壓tar.gz文件 :param fname: 壓縮文件名 :param dirs: 解壓後的存放路徑 :return: bool """ try: t = tarfile.open(fname) t.extractall(path = dirs) return True except Exception as e: print(e) return False untar('aa.tar.gz','./')
完整代碼以下:設計
#!/usr/bin/env python3 # coding: utf-8 import os, tarfile def make_targz(output_filename, source_dir): """ 一次性打包目錄爲tar.gz :param output_filename: 壓縮文件名 :param source_dir: 須要打包的目錄 :return: bool """ try: with tarfile.open(output_filename, "w:gz") as tar: tar.add(source_dir, arcname=os.path.basename(source_dir)) return True except Exception as e: print(e) return False def untar(fname, dirs): """ 解壓tar.gz文件 :param fname: 壓縮文件名 :param dirs: 解壓後的存放路徑 :return: bool """ try: t = tarfile.open(fname) t.extractall(path = dirs) return True except Exception as e: print(e) return False # make_targz('aa.tar.gz','folder') untar('aa.tar.gz','./')
執行程序,就會將aa.tar.gz解壓到當前文件夾下code
把文件的二進制代碼壓縮,把相鄰的0,1代碼減小,好比有000000,能夠把它變成6個0 的寫法60,來減小該文件的空間。htm
本文參考連接: