Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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 docx.opc.exceptions.PackageNotFoundError:打开文档时未找到包_Python_Docx - Fatal编程技术网

python docx.opc.exceptions.PackageNotFoundError:打开文档时未找到包

python docx.opc.exceptions.PackageNotFoundError:打开文档时未找到包,python,docx,Python,Docx,我想用函数Document()打开一个.docx文件。但它总是会回来: docx.opc.exceptions.PackageNotFoundError:在“/home/chaomaer/PycharmProjects/demo/lab1/book1.docx”中找不到包 但是,当我将函数更改为open()时,它运行良好 我想知道“为什么?” 第一次安装pip安装python docx 然后更改以下代码: from docx import Document import os #document

我想用函数
Document()
打开一个.docx文件。但它总是会回来:

docx.opc.exceptions.PackageNotFoundError:在“/home/chaomaer/PycharmProjects/demo/lab1/book1.docx”中找不到包

但是,当我将函数更改为
open()
时,它运行良好

我想知道“为什么?”


第一次安装
pip安装python docx
然后更改以下代码:

from docx import Document
import os
#document = open('book1.docx')
document = Document('book1.docx')
for p in document.paragraphs:
    print p.text
它对我有用。希望这会有所帮助

编辑:

>>> import docx
>>> doc = docx.Document()
>>> doc.add_paragraph('Hello world!')
<docx.text.Paragraph object at 0x0000000003B56F60>
>>> doc.save('helloworld.docx')
您应该使用MS或其他合适的编辑器创建docx文件。我的建议是,如果你有账户,使用谷歌文档。在终端中使用
touch
命令创建文件没有帮助。

我知道一个简单的解决方案 我在一家乌班图操作系统工作 当docx引发错误时,请尝试复制无法在MS word中的新文件中打开的文件。它对我有用
如果有人知道深层次的原因。非常感谢您。

我注意到,如果在Windows资源管理器中右键单击并选择“新建”>“Word文档”来创建Word文档,我将永远收到该文档上的PackageNotFoundError。相反,如果我打开Microsoft Word并在其中创建文档,它就可以正常工作。

这发生在我身上。结果发现,我试图用docx打开的word文档已损坏。

我发现,如果同时打开word文档,即使我没有对它做任何操作,它仍会抛出此错误。关闭word文档为我解决了问题。

编写word文档

以下说明可在“automatetheboringstuff”一书中找到

  • 要创建自己的.docx文件,请调用docx.Document()以返回新的空白Word文档对象
  • add_paragration()document方法向文档中添加新的文本段落,并返回对已添加段落对象的引用
  • 添加完文本后,将文件名字符串传递给save()document方法,以将document对象保存到文件中
  • 这将在当前工作目录中创建一个名为helloworld.docx的文件
在交互式shell中输入以下内容:

>>> import docx
>>> doc = docx.Document()
>>> doc.add_paragraph('Hello world!')
<docx.text.Paragraph object at 0x0000000003B56F60>
>>> doc.save('helloworld.docx')
导入docx >>>doc=docx.Document() >>>文件添加段落(“你好,世界!”) >>>doc.save('helloworld.docx')
似乎我们中的许多人都在创建名为的文档,我们称之为openobject函数,而docx库在调用openobject函数时创建了一个没有名称的空文件。保存文档时需要添加位置和名称。

起初,我遇到了相同的问题,但并非所有Docx文件都有,只有少数文件。然后,我打印了每个文件的本地路径,并发现每当我遇到PackageNotFoundError问题时。大多数情况下,这些文件都是临时Docx文件,即使从Microsoft应用程序也无法打开/读取

下面是我的代码:

def _RsDocx_(SearchString, Path):
flag = 0
index = 0
doc = docx.Document(Path)
for para in doc.paragraphs:
    index += 1
    if SearchString in para.text:
        flag = 1
        break
if flag != 0:
    print('String', SearchString, 'Found In Line: ', index, 'File Path: ', Path)

我已经导入了Docx lib,并从main

A调用了这个def。Docx格式是高度相互依赖的XML文件的集合。我建议你去图书馆看看,比如。看起来很奇怪。有些.docx文件可以用函数Document()打开,但有些.docx文件不能。它仍然会引发如下错误:docx.opc.exceptions.PackageNotFoundError:Package未在“book1.docx”中找到它似乎很奇怪。有些.docx文件可以用函数Document()打开,但有些.docx文件不能。它仍然会引发如下错误:docx.opc.exceptions.PackageNotFoundError:在“book1.docx”中找不到包。确定。您的包似乎未成功安装。你能告诉我你用的是哪一个python版本吗??如果您使用python3.x,那么就安装包
pip3安装pythondocx
。我使用的是另一个版本的python2.7ok,听起来不错。我也用python2.7.x版本在我的电脑上完成了。您是否从命令行执行了pip安装python docx?如果成功执行此命令,请签入
C:\Python27\Lib\site packages`有一个名为
docx`的文件夹。如果一切正常,上述代码将成功运行。谢谢。我检查过你提到的所有条件都是正确的。但答案是它仍然不能很好地工作。文件仍然找不到。我的文件有问题。但是我可以用word打开文件。我现在很困惑。最后,我非常感谢您。如果
.docx
文件的路径目录被错误地给出,那么也会产生同样的错误。确实如此。但是我确信路径是正确的。我想知道你,我在我的windows PC上所做的所有尝试,如果路径错误,都会给出相同的错误。谢谢。@chaomaer看到了与您在这里描述的相同的问题,其中一些.docx文件打开良好,而另一些文件出现此错误。你能澄清一下你的Ubuntu解决方案吗?听起来像是你在MS Word中手动打开文件。。。你有Ubuntu中的自动化解决方案吗?