python文档处理问题解决:docx.opc.exceptio

2024-01-04  本文已影响0人  前端组件分享

原文链接:https://blog.csdn.net/nings666/article/details/134820079

解决:docx.opc.exceptions.PackageNotFoundError: Package not found at ‘xxx’

背景

报错问题

报错翻译

报错位置代码

报错原因

解决方法

参考内容

今天的分享就到此结束了

背景

在使用之前的代码时,报错:

Traceback (most recent call last):

File , line 1, in

file=docx.Document(“C:/Users/Administrator/Desktop/选择/add.doc”)

docx.opc.exceptions.PackageNotFoundError: Package not found at ‘xxx’

报错问题

  Traceback (most recent call last):

    File , line 1, in 

      file=docx.Document("C:/Users/Administrator/Desktop/选择/add.doc")

  docx.opc.exceptions.PackageNotFoundError: Package not found at ‘xxx’

报错翻译

主要报错信息内容翻译如下所示:

  Traceback (most recent call last):

    File , line 1, in 

      file=docx.Document("C:/Users/Administrator/Desktop/选择/add.doc")

  docx.opc.exceptions.PackageNotFoundError: Package not found at ‘xxx’

翻译:

  回溯(最近一次调用最后一次):

file=docx.Document("C:/Users/Administrator/Desktop/选择/add.doc")

中的文件 “”,第 1 行

错误:未找到 rarfile 的匹配发行版

1

2

3

4

5

6

报错位置代码

...

import docx

      file=docx.Document("C:/Users/Administrator/Desktop/选择/add.doc")

    print(js)

...

报错原因

经过查阅资料,发现是使用docx.Document()读取文件的时候,支持读取 .docx 文件,不支持读取 .doc 文件,不是 .docx 需要转换成 .docx。

小伙伴们按下面的解决方法即可解决!!!

解决方法

要解决这个错误,需要使用wps打开文件另存为docx,才可以解决此问题。

正确的代码是:

...

import docx

file=docx.Document("C:/Users/Administrator/Desktop/选择/add.doc")

for para in doc.paragraphs:

    print(para.text)

...

1

2

3

4

5

6

7

8

网上也找了很多其他答案,能够解决问题的还有以下几种:

因为word文件是空的,在文件里加一些内容就可以

在文件里加几个空格就可以解决

在使用SaveAs2()函数时,第二个参数代表存储格式,16代表的存储格式为doc,12代表的存储格式为docx。存储格式设置成12后,python-docx就能读取文件了,代码示例如下。

正确的代码如下:

# encoding=utf-8

from win32com import client as wc

w = wc.gencache.EnsureDispatch('kwps.application')

doc = w.Documents.Open(r"C:/Users/Administrator/Desktop/选择/add.doc")

doc.SaveAs2(r"C:/Users/Administrator/Desktop/选择/add.docx", 12) # 问题出在这,必须为12

使用上述例子时,还需要注意:

需要用到win32com这个包,不是Python内建的,需要通过python -m pip install pypiwin32安装。

要用gencache.EnsureDispatch这个函数才行,网上其他大神用的方法不行。另外,如果你的电脑只安装了WPS,函数参数就得是“kwps.application”,如果有Office,参数就不是这个了。

Open方法内的文件路径得用绝对路径,用相对路径的话我反正报错。

另存为不用SaveAs,要用SaveAs2,参数是绝对路径。

参考内容

100%解决docx.opc.exceptions.PackageNotFoundError: Package not found at

Python 将doc转化为docx

————————————————

版权声明:本文为CSDN博主「ninghes」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/nings666/article/details/134820079

https://blog.csdn.net/nings666/article/details/134820079?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-3-134820079-blog-133884201.235%5Ev40%5Epc_relevant_anti_t3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-3-134820079-blog-133884201.235%5Ev40%5Epc_relevant_anti_t3&utm_relevant_index=6

上一篇 下一篇

猜你喜欢

热点阅读