如何在不写入磁盘的情况下解压缩?

How to unzip without writing to disk?

我在只读系统中有一个 zip 存档 path_to_zip_file。棘手的是,我需要解压缩其内容并打开 zip 存档中包含的 CSV 文件 testfile.csv请注意,zip 存档包含许多不同的文件,但我只想从中提取一个 CSV 文件。 我的目标是将此 CSV 文件的内容放入 pandas 数据帧 df.

我的代码如下所示。有没有办法更新它,使其可以在只读系统中执行?换句话说,我如何 运行 它在内存中而不写入磁盘?

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)

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

在已经打开的存档上使用 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)