我有一个压缩的存档,其中包含几个csv文件。
例如,假设myarchive.zip包含myfile1.csv、myfile2.csv、myfile3.csv
在python 2.7中,我能够迭代地加载pandas中的所有myfiles
import pandas as pd
import zipfile
with zipfile.ZipFile(myarchive.zip, 'r') as zippedyear:
for filename in ['myfile1.csv', 'myfile2.csv', 'myfile3.csv']:
mydf = pd.read_csv(zippedyear.open(filename))现在,使用Python 3执行相同的操作会引发错误
ParserError:迭代器应该返回字符串,而不是字节(您是以文本模式打开文件的吗?)
我在这里不知所措。知道有什么问题吗?谢谢!
发布于 2018-05-09 18:38:02
确实很奇怪,因为您可以指定的唯一模式是r/w (字符模式)。
这里有一个解决办法:使用file.read读取文件,将数据加载到StringIO缓冲区,并将其传递给read_csv。
from io import StringIO
with zipfile.ZipFile(myarchive.zip, 'r') as zippedyear:
for filename in ['myfile1.csv', 'myfile2.csv', 'myfile3.csv']:
with zippedyear.open(filename) as f:
mydf = pd.read_csv(io.StringIO(f.read()))https://stackoverflow.com/questions/50259792
复制相似问题