首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用zipfile和scipy.io.arff从ZIP中读取ARFF

用zipfile和scipy.io.arff从ZIP中读取ARFF
EN

Stack Overflow用户
提问于 2019-03-19 15:04:43
回答 1查看 254关注 0票数 2

我想在scikit-learn中处理相当大的ARFF文件。这些文件在zip存档中,我不想在处理之前将存档解压到文件夹中。因此,我使用Python 3.6的zipfile模块:

代码语言:javascript
复制
from zipfile import ZipFile
from scipy.io.arff import loadarff

archive = ZipFile( 'archive.zip', 'r' )
datafile = archive.open( 'datafile.arff' )
data = loadarff( datafile )
# …
datafile.close()
archive.close()

但是,这会产生以下错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "./m.py", line 6, in <module>
    data = loadarff( datafile )
  File "/usr/lib64/python3.6/site-packages/scipy/io/arff/arffread.py", line 541, in loadarff
    return _loadarff(ofile)
  File "/usr/lib64/python3.6/site-packages/scipy/io/arff/arffread.py", line 550, in _loadarff
    rel, attr = read_header(ofile)
  File "/usr/lib64/python3.6/site-packages/scipy/io/arff/arffread.py", line 323, in read_header
    while r_comment.match(i):
TypeError: cannot use a string pattern on a bytes-like object

根据loadarff documentation的说法,loadarff需要一个类似文件的对象。根据zipfile documentation的说法,open返回一个类似文件的ZipExtFile

因此,我的问题是如何使用ZipFile.open返回的内容作为loadarff的ARFF输入。

注意:如果我手动解压并直接用data = loadarff( 'datafile.arff' )加载ARFF,一切都很好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-19 16:09:55

代码语言:javascript
复制
from io import BytesIO, TextIOWrapper
from zipfile import ZipFile
from scipy.io.arff import loadarff

zfile = ZipFile('archive.zip', 'r')
in_mem_fo = TextIOWrapper(BytesIO(zfile.read('datafile.arff')), encoding='utf-8')
data = loadarff(in_mem_fo)

zfile读入内存中的BytesIO对象。在encoding='utf-8'中使用TextIOWrapper。在loadarff中使用此内存中缓冲的文本对象。

Edit: Turnsout zfile.open()返回一个类似文件的对象,因此上述操作可以通过以下方式完成:

代码语言:javascript
复制
zfile = ZipFile('archive.zip', 'r')
in_mem_fo = TextIOWrapper(zfile.open('datafile.arff'), encoding='ascii')
data = loadarff(in_mem_fo)

谢谢@Bernhard

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55235310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档