通过pycdf读取zip文件对象而不解压缩

时间:2017-10-27 08:44:26

标签: python zipfile

我知道如何在没有解压缩的情况下打开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文件,所以我没有路径将文件作为字符串提交)。有什么想法克服这个问题吗?非常感谢你!

1 个答案:

答案 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