在日常的自动化测试中,通常在测试结束需要发送测试报告给相关人员,而测试报告中涉及多个文件,那么就需要使用压缩文件夹的功能,下面是使用zip压缩方式的具体实现方法:
import zipfile
import os
from Conf.conf import FILE_PATH, DIR_NAME
from common.logger import GetLogger
class ZipFile():
def __init__(self):
self.logger = GetLogger().get_logger()
def zip_dir(self, dir_path):
'''
压缩文件夹
:param dir_path: 目标文件夹路径
'''
zip_path = FILE_PATH # 压缩后的文件夹名
try:
z = zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED)
for root, dirnames, filenames in os.walk(dir_path):
file_path = root.replace(dir_path, '') # 去掉根路径,只对目标文件夹下的文件及文件夹压缩
# 循环出一个个文件名
for filename in filenames:
z.write(os.path.join(root, filename), os.path.join(file_path, filename))
self.logger.info('压缩成功')
z.close()
except Exception as e:
self.logger.error('压缩失败:{}'.format(e))
if __name__ == '__main__':
z = ZipFile()
z.zip_dir(DIR_NAME + '/reports/test')
亲测可以压缩成功: