from hashlib import sha256 import json import os import shutil import zipfile # 获取当前目录 current_dir = os.path.dirname(os.path.abspath(__file__)) # 构建输出目录路径 package_dir = os.path.join(current_dir, "output", "package") shutil.rmtree(package_dir, ignore_errors=True) shutil.rmtree(os.path.join(current_dir, "output", "package.zip"), ignore_errors=True) # 确保输出目录存在 os.makedirs(package_dir, exist_ok=True) # 复制文件 shutil.copy(os.path.join(current_dir, "output", "LPT262_hilink_UPGRADE.bin"), os.path.join(package_dir, "image2_all_ota1.bin")) shutil.copy(os.path.join(current_dir, "output", "LPT262_hilink_UPGRADE.bin"), os.path.join(package_dir, "image2_all_ota2.bin")) print("文件已复制到输出目录") json_file = os.path.join(current_dir, "output", "package", "filelist.json") json_data = {} def calc_sha256(filepath): h = sha256() with open(filepath, "rb") as f: for chunk in iter(lambda: f.read(4096), b""): h.update(chunk) return h.hexdigest() file1 = os.path.join(package_dir, "image2_all_ota1.bin") file2 = os.path.join(package_dir, "image2_all_ota2.bin") json_data['image2_all_ota1.bin'] = {} json_data['image2_all_ota1.bin']['sha256'] = calc_sha256(file1) json_data['image2_all_ota2.bin'] = {} json_data['image2_all_ota2.bin']['sha256'] = calc_sha256(file2) print("file1 sha1: ", json_data['image2_all_ota1.bin']['sha256']) print("file2 sha2: ", json_data['image2_all_ota2.bin']['sha256']) with open(json_file, "w") as f: json.dump(json_data, f) package_file = os.path.join(current_dir, "output", "package.zip") with zipfile.ZipFile(package_file, "w") as zip: # 遍历package_dir目录及其所有子文件夹,将所有文件打包,并保留目录结构 for root, dirs, files in os.walk(package_dir): for file in files: file_path = os.path.join(root, file) # 归一化存储在zip中的路径,使其以package_dir为根目录 arcname = os.path.relpath(file_path, os.path.dirname(package_dir)) zip.write(file_path, arcname) print("升级包:package.zip sha256: ", calc_sha256(package_file))