我有.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__
您可以将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] 删除。
我来说两句