我知道如何在没有解压缩的情况下打开zip文件中的文件。它可以按如下方式完成:
import zipfile
archive = zipfile.ZipFile(path_to_zipfile, 'r')
my_zipfile = archive.open('file_01.cdf') # "file_01.cdf" is contained in the zipfile
我的问题是:文件" file_01.cdf" zip文件中包含的是CDF格式。通常,CDF格式文件可以按如下方式读取:
from spacepy import pycdf
cdf_file = pycdf.CDF(path_to_file)
data = cdf_file.copy()
问题是:函数pycdf.CDF
以字符串格式接受参数。但是,我想将一个zipfile对象作为参数传递给pycdf.CDF
函数。 (因为我没有解压缩zip文件,所以我没有路径将文件作为字符串提交)。有什么想法克服这个问题吗?非常感谢你!
答案 0 :(得分:0)
我知道你特意询问过这样做而不解压缩,但我认为这是不可能的(如果我错了,有人会纠正我,我希望)。
您可以执行以下操作:
import zipfile
import os
import tempfile
import shutil
path = r'C:\Users\XXX\Desktop\test.zip' # my zip file
archive = zipfile.ZipFile(path, 'r')
tmpdir = tempfile.mkdtemp(dir=os.getcwd()) # create a temp folder in the working directory
archive.extract('test.txt', path=tmpdir) # extract your file to the temp folder
path_to_my_file = os.path.join(tmpdir, 'test.txt') # this is the path to the extracted file
# -------
# do stuff with your file path
# -------
print(path_to_my_file)
shutil.rmtree(tmpdir) # delete the temp folder