2 回答
TA贡献1816条经验 获得超4个赞
打开(和截断)新文件以进行写入的最安全方法可能是使用'xb'模式。如果文件已经存在,'x'将引发一个FileExistsError。'b'是必要的,因为 word 文档基本上是一个二进制文件:它是一个包含 XML 和其他文件的 zip 存档。如果通过字符编码转换字节,则无法压缩和解压缩 zip 文件。
Document.save 接受流,因此您可以传入这样打开的文件对象来保存您的文档。
您的工作流程可能是这样的:
doc = docx.Document(...)
...
# Make your document
...
with open('outfile.docx', 'xb') as f:
doc.save(f)
最好使用with块而不是原始open文件来确保即使出现错误也能正确关闭文件。
就像您不能简单地直接写入 Word 文件一样,您也不能附加到它。“追加”的方式是打开文件,加载Document对象,然后写回,覆盖原来的内容。由于 word 文件是一个 zip 存档,因此附加的文本很可能不会出现在它所在的 XML 文件的末尾,更不用说整个 docx 文件了:
doc = docx.Document('file_to_append.docx')
...
# Modify the contents of doc
...
doc.save('file_to_append.docx')
请记住,python-docx 库可能不支持加载某些元素,当您以这种方式保存文件时,这些元素最终可能会被永久丢弃。
TA贡献1789条经验 获得超8个赞
看起来我找到了答案:
这里的重点是创建一个新文件,如果没有找到,或者编辑已经存在的文件。
import os
from docx import Document
#checking if file already present and creating it if not present
if not os.path.isfile(r"file_path"):
#Creating a blank document
document = Document()
#saving the blank document
document.save('file_name.docx')
#------------editing the file_name.docx now------------------------
#opening the existing document
document = Document('file_name.docx')
#editing it
document.add_heading("hello world" , 0)
#saving document in the end
document.save('file_name.docx')
欢迎进一步编辑/建议。
添加回答
举报