本人是个初学者,写了个小程序,其中用python-docx读写docx文件一直很正常,昨天重装的电脑,先安装的是Python3.10.6(以前安装的是Python3.9),结果程序运行失败,提示如下信息:
file_docx = Document(path_docx)
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\docx\api.py", line 25, in Document
document_part = Package.open(docx).main_document_part
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\docx\opc\package.py", line 128, in open
pkg_reader = PackageReader.from_file(pkg_file)
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\docx\opc\pkgreader.py", line
35, in from_file
sparts = PackageReader._load_serialized_parts(
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\docx\opc\pkgreader.py", line
69, in _load_serialized_parts
for partname, blob, reltype, srels in part_walker:
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\docx\opc\pkgreader.py", line
105, in _walk_phys_parts
blob = phys_reader.blob_for(partname)
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\docx\opc\phys_pkg.py", line 108, in blob_for
return self._zipf.read(pack_uri.membername)
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\zipfile.py", line 1475, in read
with self.open(name, "r", pwd) as fp:
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\zipfile.py", line 1514, in open
zinfo = self.getinfo(name)
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\zipfile.py", line 1441, in getinfo
raise KeyError(
KeyError: "There is no item named 'NULL' in the archive"。
以为是Python版本与操作系统不兼容的问题,又重新安装回Python3.9.1,结果还是显示一样的错误,网上找了半天,没有找到适用的解决办法。
请指点,谢谢。
这个问题已经解决了,问题出在作为参数(path_docx)的文件,虽然用Word能正常打开,没有发现任何异常,但就是提示错误,后来重新做了一个文件就可以了,不是程序问题。为什么出现文件不能读取,目前还不清楚原因。
这篇文章:python-docx 识别表格在docx文档中的所在位置 也许能够解决你的问题,你可以看下