如果找不到使用python创建的word(.docx)文档,怎么写?
我当然不能执行以下任一操作:
file = open(file_name, 'r')
file = open(file_name, 'w')
,或者创建或追加(如果找到):
f = open(file_name, 'a+')
我也无法在以下位置的python-docx文档中找到任何相关信息:
https://python-docx.readthedocs.io/en/latest/
注意:
我需要通过python创建带有文本和饼图,图形等的自动报告。
答案 0 :(得分:1)
使用'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库可能不支持加载某些元素,当您以这种方式保存文件时,它们最终可能会被永久丢弃。
答案 1 :(得分:0)
好像我找到了答案:
这里的重点是创建一个新文件(如果找不到),或者 否则,请编辑已经存在的文件。
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')
欢迎进行其他修改/建议。