如果找不到使用python的word(.docx)文档并写入文档,该如何创建?

时间:2019-01-16 05:47:41

标签: python python-docx

如果找不到使用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创建带有文本和饼图,图形等的自动报告。

2 个答案:

答案 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')

欢迎进行其他修改/建议。