当前位置:首页>python>用Python造个文件批量生成器:按清单批量“造”PPTX、PDF和MP4类型文件

用Python造个文件批量生成器:按清单批量“造”PPTX、PDF和MP4类型文件

  • 2026-10-11 05:57:42
用Python造个文件批量生成器:按清单批量“造”PPTX、PDF和MP4类型文件

造个工具 · 第3篇 | 根据Excel文件名清单,批量生成PPTX、PDF、MP4,并且保证名称、类型、大小满足要求。

一、什么场景需要?

以下这些场景需要:

  • 软件测试:需要大量不同格式的测试文件,验证功能
  • 演示环境:要给客户演示系统,目录中需要快速填充“看起来像回事”的文件
  • 压力测试:测试文件上传功能等,需要各种大小、各种格式的测试文件
  • 教学训练:批量生成一批素材文件,供教学使用

这时候就需要找工具或者自己写脚本了。今天制作的这个Python工具,命名为 FakeFileMaker,它就是这样的工具——按Excel清单,批量生成PPTX、PDF、MP4文件,并能设定文件名称、格式以及文件大小的范围。

工具已开源:https://github.com/ICodeWR/FakeFileMaker


二、FakeFileMaker是什么?

FakeFileMaker是一个Python写的命令行工具,核心功能是:读取Excel里的文件名清单,然后批量生成对应的PPTX、PDF、MP4文件。

项目地址:https://github.com/ICodeWR/FakeFileMaker

核心特点

特点
说明
三种文件格式
PPTX、PDF、MP4(1920×1080 H.264)
智能识别
自动识别Excel里的“文件名”列,中英文表头都支持
文件大小范围
可以指定目标大小范围,随机生成大小范围内的文件
增量续传
中途中断了,重新运行会跳过已生成的文件
并行加速
多线程并行生成,大量文件时提速明显
交互式向导
不记得命令行参数了?运行--interactive一步步引导

三、技术栈概览

技术
用途
Python
Python解释器,运行环境
python-pptx
PPTX 生成
reportlab
PDF 生成
openpyxl
Excel 读取
moviepy
MP4 回退方案
rich
终端美化输出
pyyaml
YAML 配置解析
Pillow
随机图像生成

四、快速上手

4.1 安装

# 克隆项目git clone https://github.com/ICodeWR/FakeFileMaker.gitcd FakeFileMaker# 创建虚拟环境(推荐)python -m venv venv.\venv\Scripts\Activate.ps1   # Windows# source venv/bin/activate    # Mac/Linux# 安装依赖pip install -r requirements.txt

注意:如果要生成MP4,建议提前安装ffmpeg并加入系统PATH。没有ffmpeg也能跑,但会使用moviepy回退方案,速度慢很多。

4.2 准备文件名清单

生成一个示例Excel:

python generate_sample.py

会生成 sample.xlsx,内容如下:

file_name
项目报告
季度总结
培训材料
产品介绍
年度计划
会议纪要
技术方案
测试视频
演示文稿
学习笔记

也可以自己手动(按需)创建Excel,只需要有一列文件名即可。表头支持:file_name、filename、文件名、名称、name、文件名称。

4.3 批量生成文件

基础用法:

# 生成三种类型python main.py -e sample.xlsx -o ./output -t pptx pdf mp4# 只生成PPTXpython main.py -e sample.xlsx -o ./output -t pptx# 指定PPTX页数范围(2~5页)python main.py -e sample.xlsx -o ./output -t pptx --pptx-min 2 --pptx-max 5

运行后,./output 目录下会生成:

output/├── 项目报告.pptx├── 项目报告.pdf├── 项目报告.mp4├── 季度总结.pptx├── 季度总结.pdf├── 季度总结.mp4├── ...└── 学习笔记.mp4

五、项目设计

5.1 整体架构

FakeFileMaker采用分层模块化架构,从上到下分为四层:

5.2 目录结构

六、核心代码说明

6.1 Excel读取

项目中的 generators/common.py 实现了智能列检测功能,能自动识别文件名所在的列:

  • 扫描前3行,查找匹配的表头
  • 支持中英文表头:file_name、filename、文件名、名称、name、文件名称
  • 找不到匹配时默认第一列,保证兼容性

6.2 接口规范

所有类型生成器 (pptx_gen.py, pdf_gen.py, mp4_gen.py) 遵循统一的接口规范,便于扩展新的文件类型:

函数
参数
返回值
generate_pptx(path, min_pages, max_pages, content)
输出路径、页数范围、内容配置
实际页数 (int)
generate_pdf(path, min_pages, max_pages, content)
输出路径、页数范围、内容配置
实际页数 (int)
generate_mp4(path, min_duration, max_duration)
输出路径、时长范围
实际时长 (float)

七、使用实例

假设我要生成10份产品介绍PPTX,每份5~10页,控制在500KB~1MB之间。

7.1 准备Excel

文件名清单:

文件名
产品A介绍
产品B介绍
产品C介绍
...(共10个)

7.2 执行命令

python main.py -e products.xlsx -o ./output -t pptx --pptx-min 5 --pptx-max 10 --target-size 500K-1M

7.3 生成的PPTX内容

生成的PPTX文件包含:

  • 封面页(随机标题 + 副标题)
  • 内容页(章节标题 + 2~4段正文)
  • 随机插入的彩色几何图形

八、MP4生成提速说明

项目中MP4生成部分采用三层回退链路和模板缓存机制:

层级
方案
说明
第1层
模板流拷贝
预生成120s模板,直接截取,无重编码
第2层
stream_loop
循环模板,生成长视频,无重编码
第3层
lavfi实时编码
首次生成模板或回退方案

首次运行会生成一个120秒的噪声视频模板(约45MB),保存在 templates/template.mp4。后续生成时直接从模板截取或循环,速度极快。

九、参数解释

9.1 基础参数

参数
简写
说明
示例
--excel-e
Excel文件路径
-e sample.xlsx
--output-o
输出目录
-o ./output
--type-t
文件类型(可多选)
-t pptx pdf mp4

9.2 文件类型参数

参数
默认值
说明
--pptx-min
 / --pptx-max
1 / 10
PPTX页数范围
--pdf-min
 / --pdf-max
1 / 10
PDF页数范围
--mp4-min
 / --mp4-max
1.0 / 10.0
MP4时长范围(秒)

9.3 其他参数

参数
说明
--parallel N
并行线程数(默认1)
--incremental
增量模式,跳过已生成文件
--target-size
目标文件大小,如 500K-2M
--force
强制覆盖已存在的文件
--interactive
交互式向导模式
--config
YAML配置文件
十、常见问题

Q1: MP4生成失败,提示ffmpeg找不到

安装ffmpeg并加入系统PATH:

    Q2: PDF中文显示为方框

    系统中缺少中文字体。

    十一、系列说明

    本文属于「造个工具」系列

    已发布:

    你平时需要批量生成测试文件吗?一般用的是什么方法?欢迎留言讨论 👇



    作者简介:码上工坊,探索用编程为己赋能,定期分享编程知识和项目实战经验。持续学习、适应变化、记录点滴、复盘反思、成长进步。

    重要提示:本文主要是记录自己的学习与实践过程,所提内容或者观点仅代表个人意见,只是我以为的,不代表完全正确,欢迎交流讨论。

    最新文章

    随机文章