脚本自动统计东方通补丁覆盖了哪些文件及覆盖文件首次出现在哪个补丁包。
import os
from openpyxl import Workbook
def main():
# ========== 请修改这里 ==========
# 主目录:存放所有升级文件夹的目录(就是截图这个目录)
scan_root = r"D:\your\patch\folder"
output_excel = r"D:\东方通覆盖文件清单.xlsx"
# ===============================
# 集合用于去重:key=东方通相对路径;value=首次发现的升级包名
cover_dict = {}
# 遍历主目录下所有一级子文件夹(就是7041-7042这类升级目录)
for entry in os.scandir(scan_root):
if not entry.is_dir():
continue
patch_dir_name = entry.name
patch_full_path = entry.path
print(f"正在扫描升级包:{patch_dir_name}")
# 递归遍历这个升级包内全部文件
for root, _, files in os.walk(patch_full_path):
for filename in files:
file_full = os.path.join(root, filename)
# 计算【相对于升级包根目录】的路径,这个路径就是东方通根目录下的目标路径
tong_path = os.path.relpath(file_full, patch_full_path)
# windows路径分隔符统一换成 /,方便查看
tong_path = tong_path.replace("\\", "/")
# 去重:只在第一次遇到的时候记录
if tong_path not in cover_dict:
cover_dict[tong_path] = patch_dir_name
# 写入Excel
wb = Workbook()
ws = wb.active
ws.title = "覆盖文件清单"
# 表头
ws.append(["东方通根目录下文件路径", "首次出现在哪个升级包"])
for file_path, patch_name in sorted(cover_dict.items()):
ws.append([file_path, patch_name])
wb.save(output_excel)
print(f"\n扫描完成!一共找到 {len(cover_dict)} 个被覆盖的唯一文件")
print(f"结果已保存至:{output_excel}")
if __name__ == "__main__":
main()
使用python3.14运行通过。
评论(0)
还没有评论,来抢沙发吧~