在 Windows 上 python-docx 中找不到包错误?

问题描述 投票:0回答:4

当我尝试从工作目录访问文件时遇到错误。这不是 @dsphoebe 问题的重复,因为我尝试打开的文件肯定是 .docx 文件,并且出于某种原因,我无法打开它。

rootdir = 'C:\\Users\\me\\Documents\\Python\\mydocs\\'
for subdir, dirs, files in os.walk(rootdir):
    for file in files:
        print(file)    #prints all word docs in my folder, just like I want

现在,当我用创建 docx 对象的语句替换该 print 语句时,

rootdir = 'C:\\Users\\me\\Documents\\Python\\mydocs\\'
for subdir, dirs, files in os.walk(rootdir):
    for file in files:
        doc = docx.Document(os.path.join(rootdir, file))
        ...
        #continuing with what I wanted to do w/ the documents...

Error: "Package not found at '%s'" % pkg_file
docx.opc.exceptions.PackageNotFoundError: Package not found at 'my doc.docx'

现在,在 mydocs 文件夹中,我的 doc.docx 是正确的标题,它肯定是一个 .docx 文件。该文件的标题由 2 个单词 和一个空格组成(即 my doc.docx)。但是,对于同一文件夹中的另一个单词文档,转换为“文档”类型对象works,该文档只有ONE单词!

这有效:

    rootdir = 'C:\\Users\\me\\Documents\\Python\\mydocs\\'
    doc = docx.Document(os.path.join(rootdir, "Access.docx"))
    Exited with code = 0

但这不是:

    rootdir = 'C:\\Users\\me\\Documents\\Python\\mydocs\\'
    doc = docx.Document(os.path.join(rootdir, "Able2Extract Professional.docx"))
    Exited with code=1

所以

two words.docx
不起作用,但
oneword.docx
可以。很混乱。有人知道如何诊断这个问题吗?

python python-docx
4个回答
4
投票

您在哪里使用

rootdir
变量?

如果

docx
只是尝试通过将该字符串与当前目录连接来打开“我的 doc.docx”,则可能无法正确转义文件名中的空格字符。

尝试使用

os.path.join()
:

import os.path
rootdir = 'C:\\Users\\me\\Documents\\Python\\mydocs\\'
doc = docx.Document(os.path.join(rootdir, "my doc.docx"))

2
投票

Eric 的回答完全正确,只是想说明一下,我也有同样的例外,错误是我已经打开了 Word 文档。

解决方案:如果要解析阅读,请关闭word文档并打开副本。


0
投票

由于路径错误,我收到此错误消息。 (缺少/)


0
投票

我尝试了这里提到的所有方法,但没有任何帮助。我已经使用它很长时间了,没有遇到过这个问题,除非我无意中尝试打开 .doc 文件。在这种情况下,将其另存为 .docx 文件可以解决问题,但这次没有效果。我尝试过这个;将其另存为 .doc 文件,打开该文件并将其另存为 .docx 文件。那没用。

最终起作用的是:我将感兴趣的表复制到一个空白的 .docx 文件中并保存。该文件打开并处理没有问题。如果将整个文档复制并粘贴到新的空白文档中并保存,则该问题可能会解决其他问题。

© www.soinside.com 2019 - 2024. All rights reserved.