Python---实战拒绝加班!3行代码实现Word批量转PDF
摘要:还在一个个打开Word点击“另存为PDF”?本文教你使用Python的
docx2pdf库,仅需3行代码,即可瞬间完成成百上千个文档的格式转换。无废话,直接上实战。
0. 为什么写这篇文章?

昨天快下班时,同事发来一个文件夹,里面有50份合同(.docx),需要全部转成PDF发给客户。如果手动打开->另存为->关闭,至少需要半小时,还容易手抖点错。
使用Python,这只是30秒的事情。
1. 环境准备
我们需要用到一个神器库:docx2pdf。
前置条件:
-
电脑上安装了 Python 3.x。
-
电脑上安装了 Microsoft Word(因为该库在Windows下调用Word的COM接口,在Mac下调用JXA)。
安装命令:
打开终端(CMD/PowerShell/Terminal),输入:
Bash
pip install docx2pdf
2. 实战演练
场景一:转换单个文件
如果你只想转换一个特定的文件,代码非常简单。
新建文件 one_file.py:
Python
from docx2pdf import convert
# 语法:convert("原文件路径", "目标文件路径")
convert("offer_letter.docx", "offer_letter.pdf")
print("转换完成!")
场景二:批量转换整个文件夹(核心实战)
这是最常用的场景。你只需要指定文件夹路径,脚本会自动识别里面所有的 .docx 文件并将其转换为PDF,保存在同一目录下。

新建文件 batch_convert.py:
Python
from docx2pdf import convert
import os
# 定义你的文件夹路径 (Windows下注意路径中的斜杠)
folder_path = r"C:\Users\Admin\Desktop\Contracts"
print(f"开始转换文件夹: {folder_path} ...")
# 一行代码搞定整个文件夹的转换
convert(folder_path)
print("所有文件转换完毕!")
注意:Windows用户建议在路径字符串前加
r,防止转义字符报错。
3. 进阶:带进度条的转换(看起来更专业)
虽然上面的代码能用,但如果文件很多,我们想知道进度怎么办?docx2pdf 自带进度条显示,但如果我们想结合 tqdm (Python最美进度条库) 自己写逻辑,可以这样控制:

安装 tqdm:
Bash
pip install tqdm
完整代码:
Python
import os
from docx2pdf import convert
from tqdm import tqdm
def batch_convert_with_progress(target_folder):
# 获取文件夹内所有docx文件
files = [f for f in os.listdir(target_folder) if f.endswith('.docx')]
if not files:
print("该目录下没有Word文档。")
return
print(f"共发现 {len(files)} 个文件,准备开始转换...")
# 使用进度条循环
for filename in tqdm(files, desc="转换进度"):
docx_path = os.path.join(target_folder, filename)
pdf_path = os.path.join(target_folder, filename.replace(".docx", ".pdf"))
# 转换单个文件
try:
convert(docx_path, pdf_path)
except Exception as e:
print(f"文件 {filename} 转换失败: {e}")
if __name__ == "__main__":
# 替换为你自己的文件夹路径
my_folder = r"C:\Users\Admin\Desktop\TestFiles"
batch_convert_with_progress(my_folder)
运行效果:
你会在控制台看到一个动态的进度条,实时显示处理了多少个文件。
4. 避坑指南
在实战中,可能会遇到以下两个常见问题:
-
报错
CoInitialize has not been called:-
原因:通常发生在多线程操作中。
-
解决:本文的单线程脚本一般不会出现。如果出现,只需使用
pythoncom.CoInitialize()初始化即可。
-
-
Word卡死或报错:
-
原因:转换过程中请不要手动打开Word文档,否则会冲突。
-
建议:运行脚本前,关闭所有Word窗口。
-
5. 总结
别再做“文档搬运工”了。通过 docx2pdf 库:
-
1行代码:
convert("文件夹路径")即可实现批量转换。 -
0 理论:不需要了解底层的PDF编码原理。
-
100% 效率:留出更多时间去学习新技术(或者摸鱼)。
赶紧把这个脚本保存起来,下次遇到批量任务时直接运行!
下一步建议
您希望我为您提供关于 “如何使用 Python 自动发送带附件的邮件” 的教程吗?这样就可以实现“自动转换 -> 自动发送”的全自动化流程了。
更多推荐


所有评论(0)