首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >zipfile.ZipFile解压缩了错误的文件

zipfile.ZipFile解压缩了错误的文件
EN

Stack Overflow用户
提问于 2021-08-29 20:23:30
回答 1查看 66关注 0票数 0

我正在处理一个处理文档的xml文件的项目。我的方法如下所示。首先将DOCX文档转换为zip存档,然后提取该存档的内容以便访问document.xml文件,最后将XML转换为txt以便使用它。

所以我在一个文档上做了上面所有的工作,一切都很好,但是当我决定使用一个不同的文档时,Zipfile库不会提取新压缩文件的内容,但是它会以某种方式提取我之前处理的旧文档的内容,并将document.xml文件转换为document.txt,而我甚至不需要运行将XML转换为txt的代码块。

最糟糕的是,旧文档甚至不在目录中,所以我不知道Zipfile是如何提取该特定文档的内容的,即使它不在路径中。

这是我在Jupyter notebook中使用的代码。

代码语言:javascript
复制
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存档的目录树。

代码语言:javascript
复制
data -
     1-docx
     2-zip
     3-extracted/-
                1-customXml/
                2-docProps/
                3-_rels
                4-[Content_Types].xml
                5-word/-document.txt

第二个文档的目录树应该如下所示

代码语言:javascript
复制
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,所以我不确定这是否与我的操作系统有关。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-31 09:39:39

我怀疑您在相对路径方面有问题,因为解压任何Word文档都会创建相同的文件/目录结构。我建议使用绝对路径来避免这种情况。您可能还想做的是,在完成对提取的文件和目录的操作和处理之后,删除它们。这样您就不会遇到任何延迟文件的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68976613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档