如何解压缩而不写入磁盘?



我在只读系统中有一个zip存档path_to_zip_file。棘手的是,我需要解压缩它的内容,并打开一个CSV文件testfile.csv,它包含在zip存档中。请注意,zip存档包含许多不同的文件,但我只想从中取出一个CSV文件。我的目标是把这个CSV文件的内容放到pandas dataframedf中。

我的代码如下所示。有没有办法更新它,使它可以在只读系统中执行?换句话说,我如何在内存中运行它而不写入磁盘?
import zipfile
import pandas as pd
path_to_zip_file = "data/test.zip"
directory_to_extract_to = "result"
with zipfile.ZipFile(path_to_zip_file, 'r') as zip_ref:
zip_ref.extractall(directory_to_extract_to)
csv_file_name = "testfile.csv"
df = pd.read_csv("{}/{}".format(directory_to_extract_to,csv_file_name), index_col=False)

在已经打开的存档文件上使用ZipFile.open,我们可以这样做:

import zipfile
import pandas as pd
with zipfile.ZipFile("archive.zip") as archive:
with archive.open("testing.txt") as csv:
df = pd.read_csv(csv)
print(df)

简单的方法是将其解压缩到/tmp,这是RAM中的一个目录。您也可以使用python的tempfile库创建一个临时目录并将其解压缩(它可能只是在/tmp中创建一个目录)

最新更新