当前位置: 首页 > news >正文

python实现提取iso中的文件(支持多平台)

 

 

#! /bin/python3
import os
import shutil
from glob import glob
from tempfile import TemporaryDirectory
import subprocess as spdef cp_with_level(list_src, folder_target, folder_src_parent):"""带原目录结构拷贝:param list_src: 带拷贝文件相对路径,支持通配符:param folder_target: 拷贝到的目标路径:param folder_src_parent: 原文件所处路径:return:"""# 拷贝目标文件for fn_need in list_src:parent_folder = os.path.join(folder_target, os.path.split(fn_need)[0])to_find = os.path.join(folder_src_parent, fn_need)print(f'searching: {to_find}')for fn in glob(to_find):pure_fn = os.path.basename(fn)os.makedirs(parent_folder, exist_ok=True)print(f'cp: {fn} -> {parent_folder}')shutil.copy(fn, parent_folder)# 修改权限为可写
            os.chmod(os.path.join(parent_folder, pure_fn), 0o600)def extract_from_iso(fn_iso, fns_to_extract, folder_store):"""从iso文件中提取内容:param fn_iso: iso文件路径:param fns_to_extract: 待提取文件相对路径列表,支持shell通配符匹配。示例:['path1/a999.txt', 'path1/b*.txt']:param folder_store: 提取的文件保存目录:return:"""if os.name == 'nt':  # windows# 挂载iso并返回盘符p = sp.Popen(['powershell', '-Command',f'echo "$((Mount-DiskImage -ImagePath "{fn_iso}" | Get-Volume).DriveLetter):"'],stdout=sp.PIPE,encoding='utf-8',)mount_path = p.stdout.read().strip()# 拷贝目标文件
        cp_with_level(fns_to_extract, folder_store, mount_path)# 取消挂载p = sp.Popen(['powershell', '-Command',f'Dismount-DiskImage -ImagePath {fn_iso}',])p.wait()else:  # linux# 挂载isotmp_dir = TemporaryDirectory()mount_path = os.path.join(tmp_dir.name, 'tmp_mount')os.makedirs(mount_path, exist_ok=True)p = sp.Popen(['mount', fn_iso, mount_path])p.wait()# 拷贝目标文件
        cp_with_level(fns_to_extract, folder_store, mount_path)# 取消挂载p = sp.Popen(['umount', mount_path])p.wait()

 

http://www.hskmm.com/?act=detail&tid=28488

相关文章:

  • 2025 年最新推荐球墨铸铁管厂家排行榜:涵盖自来水 / 污水 / 消防等多场景适用优质品牌权威推荐
  • CopyOnWriteArrayList 的故事--一起看看java原生的读写分离
  • OSI模型-笔记
  • Docker概念
  • 痞子衡嵌入式:如果i.MXRT1xxx在Hab关闭时出现偶发性启动失败,请先检查JTAG电路
  • 2025 电缆绝缘材料生产厂家最新推荐榜单:品牌技术实力解析,爱普等企业领跑行业
  • SAP BP主数据维护BAPI CVI_EI_INBOUND_MAIN(转)
  • 2025 年最新外呼系统机构最新推荐排行榜:深度解析技术实力、服务体系及行业适配方案电话营销外呼系统/智能外呼系统/外呼系统电销卡/外呼系统平台搭建推荐
  • 详细介绍:深入解析 List 容器组件:构建高效、可交互的列表解决方案
  • CF848C Goodbye Souvenir 题解(CDQ分治)
  • 2025 年汽车刹车卡钳厂家最新推荐榜单:原厂适配 / 高性能 / 新能源专用等多类型产品深度解析及选购指南分体锻造/大轮毂/高性能/新能源汽车刹车卡钳厂家推荐
  • 2025年开发者必看:本土化代码管理平台Gitee如何助力中国开发者高效协作
  • 2025 年消防设施检测 / 电气防火检测 / 防雷装置检测 / 消防维保 / 环境检测服务公司推荐:北京市通雷防雷装置安全检测有限公司提供专业技术支持
  • 直播app开发,如何快速获取系统时间? - 云豹科技
  • 2025 年泡棉厂家最新推荐榜:全方位解析 EPE 泡棉 / EVA 泡棉 / 珍珠棉泡棉 / 泡棉内衬优质企业,助采购商精准选对品牌
  • C. awoos Favorite Problem
  • Outlook邮箱大附件邮件是什么?
  • 2025 年过滤机厂家最新推荐排行榜:胶带式 / 盘式真空 / 脱水 / 带式真空 / 水平带式过滤机企业权威选购指南
  • 国产代码管理平台Gitee:破解企业级Git自建难题的密钥
  • 2025 年蜂巢/高强/HDPE/PET/高分子/塑料/插接/土工格室厂家口碑推荐榜:聚焦品质与服务,助力工程选材更高效
  • 基于K近邻(KNN)算法在MATLAB中实现人脸识别
  • 2025 年最新推荐灭火器维修公司榜单:覆盖干粉 / 水基 / 二氧化碳 / 七氟丙烷 / 锂电池灭火器维修,帮您选到专业可靠服务单位
  • Vue大屏可视化自适应(等比列缩放)方案✔️✔️✔️✨
  • VonaJS AOP编程:全局中间件全攻略
  • 单调队列 (1) - 详解
  • 2025 年 密度 / 净化 / 零醛添加 / 装修 / 生态板 / 指接板板材厂家推荐:纯品梅花深耕高端定制,打造健康家居板材优质选择
  • 深入解析:考研复习-线性代数-第二章-矩阵
  • PHP 与 HTML 混写基础
  • 2025 年隧道/车丝/打孔/矿用/R780/钢花钢管厂家推荐榜:精准匹配施工需求,优选可靠供应商
  • 2025 年最新推荐!空压机租赁公司综合实力榜单:涵盖无油 / 高压 / 阿特拉斯等机型及二手买卖置换回收,助力企业精准选靠谱服务商