Python使用文件字节访问zip文件,并在每个文件上循环以将其保存到数据帧中,返回的错误为“未找到文件”

Python使用文件字节访问zip文件,并在每个文件上循环以将其保存到数据帧中,返回的错误为“未找到文件”,python,zipfile,bytesio,Python,Zipfile,Bytesio,我正在调用一个API,该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 = myzipf

我正在调用一个API,该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)

知道如何提取文件大小吗?它看起来像是
myfile.seek(0,2)
然后
size=myfile.tell()
将给出python中任何文件/二进制对象的大小(以字节为单位)。我假设这适用于zipfile创建的文件对象,但我现在无法测试它。