Python将zip配对的两个列表写入docx仅保留单条数据问题求解
你的代码存在两处逻辑错误,导致旧内容被不断覆盖,仅保留最后一次写入的结果:
- 把
Document()实例化操作写在了for循环内部:每次循环都会创建一个全新的空白文档对象,之前循环添加的内容不会被保留在新对象里 - 把
save()保存操作也写在了for循环内部:每次循环都会直接用当前只有单条内容的文档覆盖原文件,之前的保存结果直接被替换
正确写法(每次运行新建完整文档)
from docx import Document john = [...] jake = [...] # 初始化文档对象放在循环外,全程只创建一次 document = Document() for a,b in zip(john, jake): document.add_paragraph(f"{a}---------------{b} \n") # 所有内容全部添加完成后,只执行一次保存 document.save("docxpy.docx")
追加写入已有文档的写法
如果你需要的是每次运行代码都往已存在的docxpy.docx里追加新内容,而非每次新建整个文档,可以用以下写法:
from docx import Document import os john = [...] jake = [...] file_path = "docxpy.docx" # 存在就读取已有文档,不存在就新建 if os.path.exists(file_path): document = Document(file_path) else: document = Document() for a,b in zip(john, jake): document.add_paragraph(f"{a}---------------{b} \n") document.save(file_path)
内容的提问来源于stack exchange,提问作者eyup.tatar
相关产品推荐
相关产品推荐

