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

Get path from open zip file in Python

所以我正在使用的代码从这样的 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。它只是 returns 文件名而不是存储此解压缩文件的路径。

如何从 myfile 获取路径?
或者有没有其他方法可以在不更改原始 zip 文件的情况下获取文件及其路径?

提取方法returns规范化路径

from zipfile import ZipFile

with ZipFile('spam.zip') as z:
    filepath = z.extract('eggs.txt')

这里的问题是,您并没有像在 GUI 中那样打开 zip 文件并解压缩文件,您在那里所做的实际上是打开文件内容并将其读入 io.BufferedIOBase class格式。

如果您打算使用 zip 文件中的其中一个文件,则需要将其解压缩,或者根据您读入变量的内容创建一个新文件。我更喜欢第一个选项:

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

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