一个Word文档就是一个Word文件,Word文件类型主要分为doc和docx两种,doc是旧版(Word97-Word2003),docx是新版(Word2007及以上),docx当然是优于doc的,主要表现是docx的性能更好且体积更小。还要注意,python-docx只支持docx,不支持doc。
在python-docx中,如果你要新建一个Word文档,那是非常简单的,只需要实例化一个Document对象即可,代码如下:
from docx import Document
doc = Document()
新建和保存文档都是最基本的操作,如果新建了一个文档最后却没有保存到硬盘上,那就是白忙一场。保存文档也不难,就是调用下Document对象的save()方法,把文件路径传进去就可以了,文件路径支持相对路径和绝对路径,先看一下我的写法:
import os
from docx import Document
# 获取当前工作路径(本代码文件的绝对路径)
work_path = os.getcwd()
# 目标文件夹名
dir_name = "./word_ files/"
# 目标文件名
file_name = "test.docx"
# 拼接目标文件夹绝对路径
target_dir = os.path.join(work_path,dir_name)
print(target_dir)
# 如果目标文件夹不存在则创建
if not os.path.exists(target_dir):
os.makedirs(target_dir)
# 拼接完整绝对路径
full_path = os.path.join(work_path,dir_name,file_name)
print(full_path)
# 新建文档
doc = Document()
# 保存文档
doc.save(full_path)
不是说保存文档很简单吗?我这居然写了那么多代码,你看了我的代码就知道其实真正保存文档的就只有最后一行代码,上面的代码都是在处理路径,主要目的也是为了带大家再熟悉一下路径处理。我要做的是在当前工作路径,也就是此代码文件所在的文件夹,里面新建一个word_files文件夹,然后把文档保存到word_files文件夹里。
获取当前工作路径可以使用os.getcwd()方法,判断路径是否存在可以使用os.path.exists()方法,拼接路径可以使用os.path.join()方法,这几个方法也在os模块那一节的那个表格里,如果你之前有练习过应该是可以想起来的。
如果要打开一个已存在的文档也是相当简单的,只要在实例化Document对象的时候传入文档路径即可,支持绝对路径和相对路径,代码如下:
from docx import Document
doc = Document("./word_ files/test.docx")
实例化Document对象时,除了可以传入文档路径,还可以传入一个文件操作符。也许一秒前你眼前又会闪过一个大问号,文件操作符?怎么听起来那么耳熟呢?文件操作符就是读写文件的open()函数返回的那个对象啊,应该想起来了吧,那么保存Word文档的另一个写法也就没什么问题了。我这里还是展示一下使用with关键字搭配open()函数的写法,代码如下:
from docx import Document
with open("./word_ files/test.docx","rb") as f:
doc = Document(f)