从 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 文件保持完整。
所以我正在使用的代码从这样的 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 文件保持完整。