请求编写跨Mac/Windows脚本:复制指定文件并重命名且压缩子文件夹
跨平台解决方案:Python脚本实现需求
先确认你的初始目录结构是这样的:
├── robot │ ├── round │ │ ├── asset-20@2x.png │ │ ├── asset-30@2x.png │ │ ├── asset-64@2x.png │ │ └── asset-128@2x.png │ └── square │ ├── asset-20@2x.png │ ├── asset-30@2x.png │ ├── asset-64@2x.png │ └── asset-128@2x.png ├── plane │ ├── round │ │ ├── asset-20@2x.png │ │ ├── asset-30@2x.png │ │ ├── asset-64@2x.png │ │ └── asset-128@2x.png │ └── square │ ├── asset-20@2x.png │ ├── asset-30@2x.png │ ├── asset-64@2x.png │ └── asset-128@2x.png
下面这个Python脚本可以直接在Mac和Windows上运行,不需要额外依赖(Python 3.6+即可):
import os import shutil # 定义要处理的主文件夹列表 main_folders = ["robot", "plane"] for folder in main_folders: # 1. 复制并重命名图片 src_img_path = os.path.join(folder, "round", "asset-128@2x.png") dest_img_path = os.path.join(folder, f"{folder}.png") if os.path.exists(src_img_path): shutil.copy2(src_img_path, dest_img_path) print(f"已成功复制图片到 {dest_img_path}") else: print(f"警告:未找到 {src_img_path},跳过图片复制") # 2. 压缩round和square文件夹 zip_dest_path = os.path.join(folder, f"{folder}.zip") # 先临时创建一个文件夹,把round和square放进去再压缩(避免zip里带多余层级) temp_dir = os.path.join(folder, "_temp_zip") os.makedirs(temp_dir, exist_ok=True) # 复制round和square到临时目录 for sub_folder in ["round", "square"]: src_sub_path = os.path.join(folder, sub_folder) dest_sub_path = os.path.join(temp_dir, sub_folder) if os.path.exists(src_sub_path): shutil.copytree(src_sub_path, dest_sub_path) print(f"已准备压缩 {sub_folder} 文件夹") else: print(f"警告:未找到 {src_sub_path},跳过该文件夹压缩") # 压缩临时目录里的内容,然后删除临时目录 shutil.make_archive(zip_dest_path.replace(".zip", ""), "zip", temp_dir) shutil.rmtree(temp_dir) print(f"已成功生成压缩包 {zip_dest_path}") print("所有操作完成!")
脚本说明
- 跨平台兼容性:用Python内置的
os和shutil模块,不需要依赖系统自带的压缩工具(比如Mac的zip命令或Windows的tar),确保两边都能稳定运行 - 图片复制逻辑:精准定位每个主文件夹下
round子目录里的asset-128@2x.png,复制到主文件夹根目录后自动重命名为<主文件夹名>.png - 文件夹压缩逻辑:先创建临时目录存放
round和square,再压缩临时目录内容,这样生成的zip包打开后直接就是目标文件夹,不会出现多余的层级结构 - 容错处理:如果某个文件/文件夹不存在,会打印警告信息但继续执行其他操作,避免因局部问题中断整个流程
使用方法
- 把这个脚本保存为
process_assets.py,放在和robot、plane同一级的目录下 - 确保你的电脑安装了Python 3.6+(Mac一般自带,Windows可从官网安装)
- 打开终端(Mac)或命令提示符(Windows),切换到脚本所在目录,运行:
python process_assets.py
运行完成后,你的目录结构就会变成预期的样子:
├── robot │ ├── round │ │ ├── asset-20@2x.png │ │ ├── asset-30@2x.png │ │ ├── asset-64@2x.png │ │ └── asset-128@2x.png │ ├── square │ │ ├── asset-20@2x.png │ │ ├── asset-30@2x.png │ │ ├── asset-64@2x.png │ │ └── asset-128@2x.png │ ├── robot.png │ └── robot.zip ├── plane │ ├── round │ │ ├── asset-20@2x.png │ │ ├── asset-30@2x.png │ │ ├── asset-64@2x.png │ │ └── asset-128@2x.png │ ├── square │ │ ├── asset-20@2x.png │ │ ├── asset-30@2x.png │ │ ├── asset-64@2x.png │ │ └── asset-128@2x.png │ ├── plane.png │ └── plane.zip
内容的提问来源于stack exchange,提问作者Bacosca
相关产品推荐
相关产品推荐

