Python 使用文件字节访问 zip 文件并遍历每个文件以将它们保存到数据帧中返回文件未找到的错误

Python access a zip file using file bytes and loop over each file to save them into data frames is returning an error of file is not found

我正在调用 API,这将生成一个可能包含多个 CSV 文件的 zip 文件:

import zipfile
from io import BytesIO

api_url = res.json()['export_url']
new_res = requests.get(api_url, auth=(user, pass))
filebytes = BytesIO(new_res.content)
myzipfile = zipfile.ZipFile(filebytes)
a = myzipfile.extractall
for name in myzipfile.namelist():
    print(name)

我可以清楚地看到文件名,但无法将它们分别读入数据框中:

for name in myzipfile.namelist():
    df = pd.read_csv(name)

错误是:

FileNotFoundError: [Errno 2] File data.csv does not exist: 'data.csv'

我试过:

for name in myzipfile.printdir():
    print(name)

并读取为 csv,但没有用。

该文件仍然是压缩文件 - 您不能像往常一样只阅读包含的文件。 Zipfile 有自己的 open 函数来读取包含的文件。然后,您可以使用 pandas.

将数据读入数据帧
for name in myzipfile.namelist():
    with myzipfile.open(name) as myfile:
        df = pd.read_csv(myfile)