今天接到一个小活,需要在打包平台中接一个小脚本。需要对*.exe安装包进行解压并对其解压后的文件进行数字签名认证。起初以为是多么easy的事情,结果在实际操作中发现通过使用import zipfile、import tarfile均宣告解压失败。
不过发现7z到是可以解压,
#!/usr/bin/env python # -*- coding: UTF-8 -*- import os import sys def Extract_File(filePath,target): """""" zip_command = r'C:\Progra~1\7-Zip\7z' + " "+"x %s -y -o%s" %(filePath,target) print zip_command os.system(zip_command)
“zip_command = r'C:\Progra~1\7-Zip\7z' + " "+"x %s -y -o%s" %(filePath,target)”直接通过os.system执行该命令行,搞定!
备注:命令行中参数“x”为全路径解压,相当于在*.exe文件上右键执行“7-zip|提取到.....”。开始使用的参数“e”,结果递归把*.exe中包含的二级exe文件也解压了(eg:安装包中的执行exe和uninstall.exe等)。-y 跳过询问一路执行到底,-o设置输出路径
解压成功剩下的就nice了:
1 def recursion_File(path): 2 for root,dir,files in os.walk(path): 3 for file in files: 4 #调用小工具循环执行签名验证