如今有一个目录,须要将此目录打包成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
本文参考连接: