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