熊猫 如何从ZIP存档中读取Excel文件

伊万(Ivan Vodopyanov):

我有.zip存档,其中包含filename.xlsx,我想逐行解析Excel工作表。

在这种情况下,如何将文件名正确传递到pandas.read_excel?

我试过了:

import zipfile
import pandas
myzip=zipfile.ZipFile(filename.zip)
for fname in myzip.namelist():
    with myzip.open(fname) as from_archive:
        with pandas.read_excel(from_archive) as fin:
            for line in fin:
            ....

但它似乎不起作用,结果是:

AttributeError: __exit__
MaxU:

您可以将zip文件解压缩到内存中的变量中,然后使用io.BytesIO以下命令进行解析

import io
from zipfile import ZipFile
import pandas as pd


def read_zip(zip_fn, extract_fn=None):
    zf = ZipFile(zip_fn)
    if extract_fn:
        return zf.read(extract_fn)
    else:
        return {name:zf.read(name) for name in zf.namelist()}

用法:

df = pd.read_excel(io.BytesIO(read_zip(r'C:\download\test.xlsx.zip', 'test.xlsx')))

或者,您可以将文件从zip文件提取到磁盘,然后将其解析为常规文件。

PS在StackOverflow上有大量示例,展示了如何爆炸zip文件...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章