python操作.docx、.pptx文件
.docx文件和.pptx文件是Microsoft Office套件中两种常见的文件格式,分别对应Word文档和PowerPoint演示文稿。WPS Office完美支持Microsoft Office文件格式。
使用 Python 操作 .docx 和 .pptx 文件是一项非常实用的技能,尤其在自动化文档生成、报告生成和批量修改演示文稿时非常有用。
要在Python中打开和处理.docx和.pptx文件,你可以使用第三方库。
如何验证是否已安装python-docx库、python-pptx库?
可在 Python 交互式环境中验证,打开 Python 交互式环境(REPL,也称为Python的 shell),然后尝试导入这些库:
import docx
import pptx
如果没有出现错误消息,说明库已经成功安装。
python操作.docx文件
python-docx 是一个用于创建和更新 Microsoft Word (.docx) 文件的 Python 库。它允许你:
创建新的 Word 文档
读取和修改现有文档
添加段落、标题、表格、图片等
安装python-docx库,在cmd中输入如下命令:
pip install python-docx
如果电脑上安装了多个Python版本,你可以为特定版本的Python安装模块(库、包)。例如我的电脑中安装了多个Python版本,要在Python 3.12版本中安装,在cmd中输入如下命令:
py -3.12 -m pip install python-docx
可以使用国内的镜像网站加快安装速度,例如使用清华的镜像,可以在后面添加 -i https://pypi.tuna.tsinghua.edu.cn/simple,如:
py -3.12 -m pip install python-docx -i https://pypi.tuna.tsinghua.edu.cn/simple
【关于安装安装第三方库的更多情况,可参见:https://blog.csdn.net/cnds123/article/details/104393385 】
下面简单介绍python-docx库的基本操作
1)创建新文档
from docx import Document
# 创建一个新的文档
doc = Document()
# 添加标题
doc.add_heading('这是一个标题', level=1)
# 添加段落
doc.add_paragraph('这是一个段落。')
doc.add_paragraph('这是另一个段落。')
# 保存文档
doc.save('示例文档.docx')
运行后在当前目录中可以找到“示例文档.docx”,打开它,内容参见下图:
特别提示, python-docx的路径处理说明:
指定完整路径可以确保文件被保存在你期望的位置。如果只使用文件名,文件将保存到当前工作目录(文件会保存在 Python 脚本所在目录)。
在 Windows 中,路径包含反斜杠 \,可能需要用双反斜杠 \\ 或前面加 r (原始字符串)来避免转义字符的问题。例如:doc.save(r'D:\path\document.docx')
如果指定路径下已存在同名文件,会直接覆盖现有文件,不会给出警告。例如: doc.save('示例文档.docx') 方法时,如果当前目录下已经存在名为 example.docx 的文件,它将被新文档覆盖,无任何提示。如果你想避免覆盖现有文件,可以在保存之前检查文件是否已经存在。以下是一种简单的实现方法:
import os
from docx import Document
def save_doc_with_no_overwrite(doc, filename):
if os.path.exists(filename):
base, extension = os.path.splitext(filename)
counter = 1
new_filename = f"{base}_{counter}{extension}"
while os.path.exists(new_filename):
counter += 1
new_filename = f"{base}_{counter}{extension}"
filename = new_filename
doc.save(filename)
print(f"文件保存为: {filename}")
# 创建一个新的 Word 文档
doc = Document()
doc.add_heading('文档标题', level=1)
doc.add_paragraph('这是一个段落。')
doc.add_paragraph('这是另一个段落。')
# 尝试保存文档
save_doc_with_no_overwrite(doc, '示例文档.docx')
说明,其中os.path.exists(filename) 用于检查文件是否存在。
如果文件已存在,脚本会增加一个后缀数字 (例如 example_1.docx, example_2.docx),直到找到一个未被使用的文件名保存。
2)读取现有文档
from docx import Document
# 打开现有文档
doc = Document('示例文档.docx')
# 遍历段落
for para in doc.paragraphs:
print(para.text)
如果你使用 python-docx 尝试打开一个不存在的文档,它将引发异常。因此,为了处理这种情况,你应该使用 try 和 except 块以避免程序崩溃,并能够妥善处理错误。
以下是一个示例,展示如何读取现有 .docx 文件,并处理文件不存在的情况:
import os
from docx import Document
def read_doc(filename):
#在尝试打开文件之前,可以使用 os.path 模块来验证文件是否存在。
if os.path.exists(filename):
try:
doc = Document(filename)
# 处理文档,读取文档内容显示
for para in doc.paragraphs:
print(para.text)
except Exception as e:
print(f"发生错误: {e}")
else:
print(f"错误: 文件 '{filename}' 不存在。")
# 尝试读取文档
read_doc('示例文档.docx')
3)修改文档内容
from docx import Document
# 打开文档
doc = Document('示例文档.docx')
# 修改第一个段落
doc.paragraphs[1].text = '这是修改后的段落。'
# 保存修改
doc.save('示例文档.docx')
说明,用doc.paragraphs[i].text= '修改后的内容'时,需要注意,在 python-docx 中,doc.paragraphs [i]是一个包含文档中所有段落的列表,包括标题、正文段落、空行、图片说明、表格标题(但不包括表格内容)、页眉和页脚(如果存在)。它们都被视为"段落"对象。索引 i 从 0 开始。所以 doc.paragraphs[0] 是文档中的第一个段落,doc.paragraphs[1] 是第二个,以此类推。为了更精确地修改文档中的特定部分(如标题或特定段落),需要了解如何区分不同类型的段落。可以通过打印段落的样式名称来确认实际使用的样式:
from docx import Document
# 打开文档
doc = Document('示例文档.docx')
# 打印(显示)段落的样式名称
for para in doc.paragraphs:
print(para.style.name)
python操作.pptx文件
python-pptx 是一个用于创建和更新 Microsoft PowerPoint (.pptx) 文件的 Python 库。它允许你:
创建新的演示文稿
读取和修改现有演示文稿
添加幻灯片、文本框、图片、图表等
安装python-pptx库,在cmd中输入如下命令:
pip install python-pptx
如果电脑上安装了多个Python版本,你可以为特定版本的Python安装模块(库、包)。例如我的电脑中安装了多个Python版本,要在Python 3.12版本中安装,在cmd中输入如下命令:
py -3.12 -m pip install python-pptx
下面简单介绍python-pptx库基本操作
1)创建新演示文稿
from pptx import Presentation
# 创建一个新的 PowerPoint 演示文稿
ppt = Presentation()
# 添加第一张幻灯片
slide_layout = ppt.slide_layouts[0] # 选择标题和内容的布局
slide = ppt.slides.add_slide(slide_layout)
# 添加标题和内容
title = slide.shapes.title
content = slide.placeholders[1]
title.text = "演示文稿标题"
content.text = "这是幻灯片的内容。"
# 添加第二张幻灯片
slide = ppt.slides.add_slide(ppt.slide_layouts[1]) # 选择标题只的布局
title = slide.shapes.title
title.text = "第二张幻灯片"
# 正确地引用第二张幻灯片的内容占位符
content = slide.placeholders[1]
content.text = "这第二张是幻灯片的内容。"
# 保存演示文稿
ppt.save('PowerPoint演示文稿.pptx')
运行后在当前目录中可以找到“PowerPoint演示文稿.pptx”,打开它,内容参见下图:
顺便提示,python-pptx 的路径处理方式与 python-docx 非常相似,可参见前面有关部分。
2)读取现有演示文稿
from pptx import Presentation
# 打开现有演示文稿
prs = Presentation('PowerPoint演示文稿.pptx')
# 遍历幻灯片
for i, slide in enumerate(prs.slides):
print(f"幻灯片 {i+1}:")
for shape in slide.shapes:
if hasattr(shape, "text"):
print(shape.text)
python-docx 官方文档 https://python-docx.readthedocs.io/en/latest/
python-pptx 官方文档 https://python-pptx.readthedocs.io/en/latest/
附录、python操作.xlsx文件
要在 Python 中操作 .xlsx 文件,可以使用 openpyxl 、 pandas 等库。
使用Python的模块openpyxl操作EXCEL https://blog.csdn.net/cnds123/article/details/104280165
使用Python的pandas库操作Excel https://blog.csdn.net/cnds123/article/details/125457620
使用Python的库xlwings操作EXCEL https://blog.csdn.net/cnds123/article/details/114446622