zipfile.ZipFile 提取了错误的文件
zipfile.ZipFile extracts the wrong file
我正在处理一个使用文档的 xml 文件进行操作的项目。我的方法如下。首先将 DOCX 文档转换为 zip 存档,然后提取该存档的内容以访问 document.xml
文件,最后将 XML 转换为 txt 以便使用它。
所以我在文档上完成了上述所有操作,并且一切正常,但是当我决定使用不同的文档时,Zipfile
库不会提取新 ZIP 存档的内容,但是不知何故提取我之前处理的旧文档的内容,并将 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
但是 Zipfile
正在提取第一个文档的内容,即使 DOCX 文件不在 directory.I 我也在使用 Ubuntu 20.04 所以我不确定它是否有与我的 OS.
有关
我怀疑您遇到了相对路径问题,因为解压缩任何 Word 文档都会创建相同的 file/directory 结构。我建议使用绝对路径来避免这种情况。您可能还想做的是,在完成对提取的文件和目录的操作和处理后,删除它们。这样您就不会遇到任何延迟文件问题。
我正在处理一个使用文档的 xml 文件进行操作的项目。我的方法如下。首先将 DOCX 文档转换为 zip 存档,然后提取该存档的内容以访问 document.xml
文件,最后将 XML 转换为 txt 以便使用它。
所以我在文档上完成了上述所有操作,并且一切正常,但是当我决定使用不同的文档时,Zipfile
库不会提取新 ZIP 存档的内容,但是不知何故提取我之前处理的旧文档的内容,并将 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
但是 Zipfile
正在提取第一个文档的内容,即使 DOCX 文件不在 directory.I 我也在使用 Ubuntu 20.04 所以我不确定它是否有与我的 OS.
我怀疑您遇到了相对路径问题,因为解压缩任何 Word 文档都会创建相同的 file/directory 结构。我建议使用绝对路径来避免这种情况。您可能还想做的是,在完成对提取的文件和目录的操作和处理后,删除它们。这样您就不会遇到任何延迟文件问题。