我正在处理一个处理文档的xml文件的项目。我的方法如下所示。首先将DOCX文档转换为zip存档,然后提取该存档的内容以便访问document.xml文件,最后将XML转换为txt以便使用它。
所以我在一个文档上做了上面所有的工作,一切都很好,但是当我决定使用一个不同的文档时,Zipfile库不会提取新压缩文件的内容,但是它会以某种方式提取我之前处理的旧文档的内容,并将document.xml文件转换为document.txt,而我甚至不需要运行将XML转换为txt的代码块。
最糟糕的是,旧文档甚至不在目录中,所以我不知道Zipfile是如何提取该特定文档的内容的,即使它不在路径中。
这是我在Jupyter notebook中使用的代码。
import shutil
import zipfile
# Convert the DOCX to ZIP
shutil.copyfile('data/docx/input.docx', 'data/zip/document.zip')
# Extract the ZIP
with zipfile.ZipFile('zip/document.zip', 'r') as zip_ref:
zip_ref.extractall('data/extracted/')
# Convert "document.xml" to txt
os.rename('extracted/word/document.xml', 'extracted/word/document.txt')
# Read the txt file
with open('extracted/word/document.txt') as intxt:
data = intxt.read()这是第一个文档的解压缩zip存档的目录树。
data -
1-docx
2-zip
3-extracted/-
1-customXml/
2-docProps/
3-_rels
4-[Content_Types].xml
5-word/-document.txt第二个文档的目录树应该如下所示
data -
1-docx
2-zip
3-extracted/-
1-customXml/
2-docProps/
3-_rels
4-[Content_Types].xml
5-word/-document.xml但是,即使DOCX文件不在目录中,Zipfile也会提取第一个文档的内容。我也在使用Ubuntu20.04,所以我不确定这是否与我的操作系统有关。
发布于 2021-08-31 09:39:39
我怀疑您在相对路径方面有问题,因为解压任何Word文档都会创建相同的文件/目录结构。我建议使用绝对路径来避免这种情况。您可能还想做的是,在完成对提取的文件和目录的操作和处理之后,删除它们。这样您就不会遇到任何延迟文件的问题。
https://stackoverflow.com/questions/68976613
复制相似问题