当前位置: 首页 > 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.rkmt.cn/news/18648.html

相关文章:

  • 2025 电缆绝缘材料生产厂家最新推荐榜单:品牌技术实力解析,爱普等企业领跑行业
  • SAP BP主数据维护BAPI CVI_EI_INBOUND_MAIN(转)
  • 运放速度揭秘:带宽与压摆率的关键对决
  • 2025 年消防设施检测 / 电气防火检测 / 防雷装置检测 / 消防维保 / 环境检测服务公司推荐:北京市通雷防雷装置安全检测有限公司提供专业技术支持
  • 直播app开发,如何快速获取系统时间? - 云豹科技
  • 2025 年泡棉厂家最新推荐榜:全方位解析 EPE 泡棉 / EVA 泡棉 / 珍珠棉泡棉 / 泡棉内衬优质企业,助采购商精准选对品牌
  • Outlook邮箱大附件邮件是什么?
  • VonaJS AOP编程:全局中间件全攻略
  • Python3 math 模块
  • 小波神经网络(WNN)预测代码
  • 优秀的研发经理,如何布局一周的工作?
  • Numerical Heat Transfer and Fluid Flow(《传热与流体流动的数值计算》)
  • 2025风机盘管厂家实力推荐:技术领先与品质保障的行业标杆
  • 2025蒸发式冷气机厂家TOP5推荐:节能降温与耐用品质深度
  • 基于Java+Springboot+Vue开发的体育场馆预约管理系统源码+运行步骤
  • 2025 酒店家具厂家最新推荐榜:北木斋领衔五大实力品牌,品质与创新双驱动选购指南智能酒店家具厂家推荐
  • CRM选型指南 | CRM软件成本拆解:本地部署、云租赁
  • 宜倍鲜携手纷享销客CRM开启数字化转型(附四大核心场景)
  • IDEA创建maven项目的不同模板的含义
  • 示波器BLDC需要知道的知识
  • CISA与USCG在关键基础设施威胁狩猎中发现网络安全改进领域
  • 2025年智慧物联与电子信息工程国际学术会议(IoTEIE 2025)
  • 笔记本使用摄像头显示“你的相机报告设备上的开关或按钮已阻止或关闭它”(特别是联想笔记本)
  • 牛客刷题-Day11
  • MySQL - ERROR 2002 (HY000): Cant connect to local MySQL Server through socket /tmp/mysql.sock
  • 直播平台开发,如何实现CPU内存使用情况的检测? - 云豹科技
  • 第十二届行为与社会计算国际会议(BESC)暨2025年机器学习与社会计算国际研讨会(MLSC 2025)
  • 金碟KIS迷你版v12.0sp1注册补丁/金蝶迷你版破解
  • 2025 年酒店一次性用品源头厂家最新推荐榜单:含牙签牙线筷子套杯盖等多品类品牌及配套能力与质检体系详解
  • 金蝶KIS专业版v12.3_破解补丁/金蝶KIS专业版v12.3下载