所以我正在使用的代码从这样的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文件即可获取文件及其路径的方法?
答案 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文件保持完整。