当我尝试从工作目录访问文件时遇到错误。这不是 @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
可以。很混乱。有人知道如何诊断这个问题吗?
您在哪里使用
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"))
Eric 的回答完全正确,只是想说明一下,我也有同样的例外,错误是我已经打开了 Word 文档。
解决方案:如果要解析阅读,请关闭word文档并打开副本。
由于路径错误,我收到此错误消息。 (缺少/)
我尝试了这里提到的所有方法,但没有任何帮助。我已经使用它很长时间了,没有遇到过这个问题,除非我无意中尝试打开 .doc 文件。在这种情况下,将其另存为 .docx 文件可以解决问题,但这次没有效果。我尝试过这个;将其另存为 .doc 文件,打开该文件并将其另存为 .docx 文件。那没用。
最终起作用的是:我将感兴趣的表复制到一个空白的 .docx 文件中并保存。该文件打开并处理没有问题。如果将整个文档复制并粘贴到新的空白文档中并保存,则该问题可能会解决其他问题。