🎬 用 Python+ Tkinter GUI 快速搭建专业的后期项目文件夹结构:穿山甲项目生成器实践分享
我用 Python 写了一个小工具——穿山甲后期项目文件夹生成器,帮我和团队自动生成标准化的后期项目文件夹结构,并附带空白工程文件,便于快速开启剪辑流程。
作者:Gabe | 导演 / 程序爱好者
为什么需要自动化生成项目结构?
作为影视从业人员,我深知“整理素材”是一项无聊但又至关重要的工作。一套清晰一致的文件夹结构不仅能提高后期效率,还能让协作流程更顺畅。然而,手动创建这些目录非常耗时,还容易出错。(主要是现在需要自己来进行DIT和后期的工作越来越多)
(为了不再折磨我自己)于是,我用 Python 写了一个小工具——穿山甲后期项目文件夹生成器,帮我和团队自动生成标准化的后期项目文件夹结构,并附带空白工程文件,便于快速开启剪辑流程。(至于为什么要叫穿山甲,我想用此方式来纪念2020年的投资建设的穿山甲以太坊矿场)
🐍 技术栈与核心思路
这个工具基于 Python 编写,采用了标准 GUI 库 Tkinter
实现可视化操作。
🧠 核心逻辑:
- 用户输入项目名称、日期与存储路径;
- 程序自动创建如下目录结构:
项目名_日期/
├── 01_Footage/
│ ├── A-Cam/
│ ├── B-Cam/
│ ├── C-Cam/
│ ├── D-Cam/
│ └── ScreenRecord/
├── 02_Photo/
│ ├── RAW/
│ ├── JPEG/
│ └── HEIC/
├── 03_Audio/
│ ├── VO/
│ ├── Music/
│ └── SFX/
├── 04_Assets/
│ ├── Titles/
│ ├── LowerThirds/
│ ├── Logo/
│ └── LUTs/
├── 05_ProjectFiles/
│ ├── Premiere/ 项目名.prproj
│ ├── DaVinci/ 项目名.drp
│ ├── FinalCut/ 项目名.fcpxml
│ ├── AfterEffects/
│ ├── Audition/
│ └── Interchange/
├── 06_Exports/
│ ├── Preview/
│ └── Final/
└── 07_Backup/
- 程序在常用剪辑软件目录中自动创建空白项目文件,省去每次手动新建工程的步骤。
🧪 使用演示
运行程序后会弹出一个简单的 GUI 界面:
- 输入项目名称(如 "MusicVideo01");
- 日期默认是今天(可修改);
- 浏览选择你想保存的位置;
- 点击「✅ 创建文件夹结构」,几秒钟后整个结构就创建好了!

🚀 亮点功能
功能 | 描述 |
---|---|
🎨 图形界面 | 不需要命令行操作,任何人都能用 |
🗃️ 自动归类素材 | 相机画面、音频、LUT、图片分门别类 |
🔧 支持多种剪辑软件格式 | Premiere、DaVinci、FCPX 等一网打尽 |
📅 支持自定义日期命名 | 满足项目管理需求 |
📁 一键生成 | 适合工作室、独立导演、Vloger 使用 |
🛠️ 安装与使用方法
只需一台安装了 Python 的电脑:
import os
import tkinter as tk
from tkinter import filedialog, messagebox
from datetime import datetime
def create_project_structure():
project_name = entry_name.get().strip()
project_date = entry_date.get().strip()
base_dir = entry_path.get().strip()
if not project_name or not base_dir:
messagebox.showwarning("缺少信息", "请填写项目名称和路径。")
return
folder_name = f"{project_name}_{project_date}"
project_path = os.path.join(base_dir, folder_name)
try:
# 01_Footage
for cam in ['A-Cam', 'B-Cam', 'C-Cam', 'D-Cam', 'ScreenRecord']:
os.makedirs(os.path.join(project_path, "01_Footage", cam))
# 02_Photo
for sub in ['RAW', 'JPEG', 'HEIC']:
os.makedirs(os.path.join(project_path, "02_Photo", sub))
# 03_Audio
for sub in ['VO', 'Music', 'SFX']:
os.makedirs(os.path.join(project_path, "03_Audio", sub))
# 04_Assets
for sub in ['Titles', 'LowerThirds', 'Logo', 'LUTs']:
os.makedirs(os.path.join(project_path, "04_Assets", sub))
# 05_ProjectFiles
project_dirs = {
"Premiere": ".prproj",
"DaVinci": ".drp",
"FinalCut": ".fcpxml",
"AfterEffects": "",
"Audition": "",
"Interchange": ""
}
for sub, ext in project_dirs.items():
sub_path = os.path.join(project_path, "05_ProjectFiles", sub)
os.makedirs(sub_path)
if ext:
file_path = os.path.join(sub_path, f"{project_name}{ext}")
open(file_path, 'a').close() # 创建空文件
# 06_Exports
for sub in ['Preview', 'Final']:
os.makedirs(os.path.join(project_path, "06_Exports", sub))
# 07_Backup
os.makedirs(os.path.join(project_path, "07_Backup"))
messagebox.showinfo("成功", f"✅ 项目文件夹和空项目文件已创建:\n{project_path}")
except Exception as e:
messagebox.showerror("错误", str(e))
def browse_folder():
folder = filedialog.askdirectory()
if folder:
entry_path.delete(0, tk.END)
entry_path.insert(0, folder)
# GUI
root = tk.Tk()
root.title("穿山甲后期项目文件夹生成器")
root.geometry("400x270")
root.resizable(False, False)
tk.Label(root, text="项目名称:").pack(pady=5)
entry_name = tk.Entry(root, width=40)
entry_name.pack()
tk.Label(root, text="日期(默认今天):").pack(pady=5)
entry_date = tk.Entry(root, width=40)
entry_date.insert(0, datetime.today().strftime("%Y-%m-%d"))
entry_date.pack()
tk.Label(root, text="存储位置:").pack(pady=5)
entry_path = tk.Entry(root, width=40)
entry_path.pack()
tk.Button(root, text="浏览...", command=browse_folder).pack()
tk.Button(root, text="✅ 创建文件夹结构", command=create_project_structure, bg="green", fg="white").pack(pady=20)
root.mainloop()
复制上述代码,新建一个文档复制进去。改后缀为py,使用python运行即可
(如你想将其打包为可执行程序 .exe
,可用 pyinstaller
)
🔮 后续计划
目前这是我个人使用的初版,接下来我打算加入以下功能:
- 自定义文件夹模板(如纪录片、短剧、商业广告结构略有差异);
- 添加素材自动归档功能(识别文件类型并分类);
- Mac 支持自动挂载外置磁盘;
- 自动生成 README 文件标注项目结构。
📦 结语
灵感的实现,不一定非得是华丽的代码,有时候一个小工具就能极大提升工作效率。希望这个“穿山甲生成器”也能帮你从杂乱的素材海洋中解脱出来,把精力留给创作本身。
如果你对这个项目感兴趣,欢迎评论交流。
Last updated: March 26, 2025