使用python压缩文件夹

441 阅读1分钟

python中有专业的库对文件夹进行压缩

zipfile 压缩zip文件 tarfile 压缩tar文件

在windows上的压缩文件格式多为rar,这种类型没有专门的库,如果使用python操作的话,可以编码调用命令行工具,执行Windows上的压缩命令;

zipfile zipfile 是python的一个内置模块,专门用于压缩文件和解压文件。

def make_zip(source_dir, output_filename):
    import zipfile   
    zipf = zipfile.ZipFile(output_filename, 'a') 
    if(os.path.isfile(source_dir)):
        zipf.write(source_dir,source_dir)
    else:    
        pre_len = len(os.path.dirname(source_dir))    
        for parent, dirnames, filenames in  os.walk(source_dir):        
            for filename in filenames:            
                #print(filename)            
                pathfile = os.path.join(parent, filename)           
                arcname = pathfile[pre_len:].strip(os.path.sep)  # 相对路径            
                zipf.write(pathfile, arcname)            
    zipf.close()

ZipFile() 用于创建1个 zip 文件对象 ZipFile.write() 用于将指定文件添加到zip文档中

tarfile

tarfile 模块可以用来读写 tar 归档,包括使用 gzip, bz2 和 lzma 压缩的归档; 官方文档地址:docs.python.org/3.5/library…

主要方法是tarfile.open() tarfile.open( name=None , mode='r' , fileobj=None , bufsize=10240 , **kwargs ) 返回TarFile路径名name的对象。

def make_targz(source_dir,output_filename):    
 tar = tarfile.open(output_filename,"w:gz")    
 for root, dir, files in os.walk(source_dir):      
     for file in files:
         #print(root,file)           
         pathfile = os.path.join(root, file)           
         tar.add(pathfile)   
 tar.close()