Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python IDLE在MailMerge尝试处理doc/docx文件时出错_Python_Docx_Mailmerge - Fatal编程技术网

Python IDLE在MailMerge尝试处理doc/docx文件时出错

Python IDLE在MailMerge尝试处理doc/docx文件时出错,python,docx,mailmerge,Python,Docx,Mailmerge,我希望能帮上忙 以前打开word文件时,它会弹出损坏的文件错误,但如果我将.doc更改为.docx并删除一些超链接(我从另一篇文章中了解到,超链接、脚注、注释都会导致错误),这次IDLE会弹出以下错误: 回溯(最近一次呼叫最后一次): 文件“C:\Users\User\AppData\Local\Programs\Python38-32\Files\u tempfiller\u\tempfiller.py”,第43行,在 document.write('TBCO.docx') 写入文件“C:\U

我希望能帮上忙

以前打开word文件时,它会弹出损坏的文件错误,但如果我将.doc更改为.docx并删除一些超链接(我从另一篇文章中了解到,超链接、脚注、注释都会导致错误),这次IDLE会弹出以下错误:

回溯(最近一次呼叫最后一次): 文件“C:\Users\User\AppData\Local\Programs\Python38-32\Files\u tempfiller\u\tempfiller.py”,第43行,在 document.write('TBCO.docx') 写入文件“C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\Local Packages\Python38\site Packages\mailmerge.py”,第129行 output.writest(zi.filename,self.zip.read(zi)) 文件“C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64_qbz5n2kfra8p0\lib\zipfile.py”,第1475行,已读 将self.open(名称“r”,pwd)作为fp: 文件“C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64_qbz5n2kfra8p0\lib\zipfile.py”,第1532行处于打开状态 raise BadZipFile(“截断的文件头”) zipfile.BadZipFile:截断的文件头

因为这是在mailmerge.py文件中,所以我无法真正理解这是什么

我的代码如下:

from __future__ import print_function

from mailmerge import MailMerge

from datetime import date

template = "TBCO.docx" #add .docx suffix if failing
print('1')

document = MailMerge(template)
print(document.get_merge_fields())

print('2')

document.merge(
    date = '1.1.1',
    name = 'Bob',
    nhs = '2223')

print('3')

document.write('TBCO.docx')

print('4')
这些指纹是为了让我看到当它反复给出set()时发生了什么,但这是固定的。我从错误消息中得到的感觉是,出于某种原因,它正在与文件类型进行斗争,但我无法理解错误的原因。任何帮助都将不胜感激


谢谢

您刚才是否将文件从
.doc
重命名为
.docx
?这些是完全不同的文件格式,只支持其中一种格式的软件将完全无法处理另一种格式。嗨,Jason,我表面上意识到了差异,但请记住,我这样做是为了看看问题是否出在文件上,而不是代码上。在更改它时,无论它采用哪种文件格式,它都不会损坏。py正在打开文件,试图找到mergefield标记,例如,我在几个地方设置了要替换信息的标记,然后在代码中关闭文件。上面的错误发生在.docx上,但即使我使用.doc,它也会损坏文件。我不知道这是否是答案,但这是因为我试图同时读取和写入文件吗?