从Python中打开的zip文件获取路径

时间:2019-05-22 15:53:02

标签: python zip unzip

所以我正在使用的代码从这样的zip文件中取消存储示例文件:

with ZipFile('spam.zip') as myzip:
    myfile = myzip.open('eggs.txt')

return myfile  # <class 'zipfile.ZipExtFile(io.BufferedIOBase)'>

我需要使用FileResponse,它需要文件路径。 因此,当检查如何在Python中检索打开的文件的路径时,解决方案似乎是(根据Get path from open file in Python):

myfile.name

但是不幸的是,这不适用于ZipExtFile。它只是返回文件的名称,而不是该解压缩文件的存储路径。

如何从myfile获取路径?
还是有另一种无需更改原始zip文件即可获取文件及其路径的方法?

2 个答案:

答案 0 :(得分:1)

提取方法返回归一化的路径

<color key="backgroundColor" red="X" green="Y" blue="Z" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>

答案 1 :(得分:1)

这里的问题是,您没有像在GUI中那样打开zip文件并提取文件,而是实际上将文件的内容打开并读取为io.BufferedIOBase类格式。

如果计划使用zip文件中的文件之一,则需要解压缩该文件,或者根据您读入变量的内容创建一个新文件。我希望第一种选择:

myzip = zipfile.ZipFile('spam.zip')
path_to_extracted_file = myzip.extract('eggs.txt')

然后,您可以将path_to_extracted_file传递给FileResponse。这将使您的原始zip文件保持完整。