工作上遇到一个问题,QA提供的1000多个压缩文件名称命名不规范,服务器做C++覆盖率产物解析,压缩文件文件名必须和解压之后的文件名一致,所以只是修改压缩文件名称行不通,必须逐个解压之后重命名文件夹,再打包成压缩文件,用Python脚本实现了下,有需要自取做下改造。
这边实现的需求是批量把文件名类似“test_P0_500_1085____1.zip”的压缩文件先解压,之后重命名成:test_main_文件名之后再重新压缩成压缩文件。
一、实现过程中遇到的几个坑
1. Python文件重命名和删除
重命名文件夹使用shutil.move()方法,删除文件夹用shutil.rmtree()方法,删除单个文件用os.remove()方法。
2. Python文件压缩类型设置
在使用zipfile.ZipFile()方法的时候,如果没有加compression参数,文件只是添加到压缩文件中,实际上并没有进行压缩操作,会维持源文件的大小。
3. Python文件压缩目录配置
使用z.write()方法压缩文件,没有传第二个参数会把压缩文件所在的根目录完整路径层级一并压缩到压缩文件中;
不能只传fileName,这样压缩出来的文件在解压之后不会有文件夹目录。最好加上压缩文件夹名称,这样在Unbuntu环境下用命令解压之后会解压到压缩前所在的folder文件夹,而不会把压缩包里面的文件都解压到当前路径中。
实现脚本源码如下:
# -*- coding: utf-8 -*-
import os
import zipfile
import shut