猿问

如果使用 python 找不到并在其中写入,如何创建 word (.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 创建一个带有文本和饼图、图形等的自动报告。


慕桂英4014372
浏览 186回答 2
2回答

繁华开满天机

打开(和截断)新文件以进行写入的最安全方法可能是使用'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 库可能不支持加载某些元素,当您以这种方式保存文件时,这些元素最终可能会被永久丢弃。

拉丁的传说

看起来我找到了答案:这里的重点是创建一个新文件,如果没有找到,或者编辑已经存在的文件。import osfrom docx import Document #checking if file already present and creating it if not presentif 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 documentdocument = Document('file_name.docx')#editing itdocument.add_heading("hello world" , 0)#saving document in the enddocument.save('file_name.docx')欢迎进一步编辑/建议。
随时随地看视频慕课网APP

相关分类

Python
我要回答