首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让arff.loadarff与urllib.request一起从URL中读取arff文件?

如何让arff.loadarff与urllib.request一起从URL中读取arff文件?
EN

Stack Overflow用户
提问于 2018-12-28 05:23:25
回答 1查看 594关注 0票数 0

你有什么好的办法让arff.loadarff在网址中工作吗?我正在尝试使用Python3.7从以下网址读取arff文件:https://archive.ics.uci.edu/ml/machine-learning-databases/00327/Training%20Dataset.arff

我尝试了几种方法,中心问题是让urllib.request返回一个文件或类似文件的对象,以便arff.loadarff能够正确识别和读取它。

以下是我尝试过的一些方法和结果:

代码语言:javascript
复制
from scipy.io import arff
import urllib.request

url = "https://archive.ics.uci.edu/ml/machine-learning-databases/00327/Training%20Dataset.arff"
response = urllib.request.urlopen(url)
data, meta = arff.loadarff(response)

这会给出一个错误TypeError,因为urlopen返回一个响应对象。

我还尝试遵循接受答案here中的解决方案

代码语言:javascript
复制
from scipy.io import arff
import urllib.request
import codecs

url = "https://archive.ics.uci.edu/ml/machine-learning-databases/00327/Training%20Dataset.arff"
ftpstream = urllib.request.urlopen(url)
data, meta = arff.loadarff(codecs.iterdecode(ftpstream, 'utf-8'))

但这也会给出一个TypeError,因为codecs.iterdecode返回一个生成器。还有这一条:

代码语言:javascript
复制
from scipy.io import arff
import urllib.request

url = "https://archive.ics.uci.edu/ml/machine-learning-databases/00327/Training%20Dataset.arff"
ftpstream = urllib.request.urlopen(url)
data, meta = arff.loadarff(ftpstream.read().decode('utf-8'))

这将以字符串的形式访问文件,但会返回完整的arff文件作为文件名,并且我会收到文件名太长的错误消息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-28 05:46:49

你就快到了。loadarff()需要一个类似文本文件的对象,而urlopen()decode()的结果都不能满足这个要求。因此,方法是使用io.StringIO()将文本字符串内容包装到一个类似文件的对象中

代码语言:javascript
复制
from scipy.io import arff
import urllib.request
import io # for io.StringIO()

url = "https://archive.ics.uci.edu/ml/machine-learning-databases/00327/Training%20Dataset.arff"
ftpstream = urllib.request.urlopen(url)
data, meta = arff.loadarff(io.StringIO(ftpstream.read().decode('utf-8')))

在这里,类文件对象指的是可以执行x.read()操作并返回字符串的文件,就像open(filename)返回的x对象一样

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

https://stackoverflow.com/questions/53951017

复制
相关文章

相似问题

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