Iva*_*nov 7 python zipfile pandas
我有.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:
....
Run Code Online (Sandbox Code Playgroud)
但它似乎不起作用,结果是:
AttributeError: __exit__
Run Code Online (Sandbox Code Playgroud)
您可以将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()}
Run Code Online (Sandbox Code Playgroud)
用法:
df = pd.read_excel(io.BytesIO(read_zip(r'C:\download\test.xlsx.zip', 'test.xlsx')))
Run Code Online (Sandbox Code Playgroud)
或者,您可以将文件从zip文件提取到磁盘,然后将其解析为常规文件。
PS在StackOverflow上有大量示例,展示了如何爆炸zip文件...
| 归档时间: |
|
| 查看次数: |
2911 次 |
| 最近记录: |