为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕桂英4014372 2021-10-12 14:57:59
如果使用 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 回答

?
繁华开满天机

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 库可能不支持加载某些元素,当您以这种方式保存文件时,这些元素最终可能会被永久丢弃。


查看完整回答
反对 回复 2021-10-12
?
拉丁的传说

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

欢迎进一步编辑/建议。


查看完整回答
反对 回复 2021-10-12
  • 2 回答
  • 0 关注
  • 185 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信