有什么好主意吗
arff.loadarff
从URL工作?我尝试从以下URL(使用python 3.7)读取arff文件:
https://archive.ics.uci.edu/ml/machine-learning-databases/00327/Training%20Dataset.arff
我尝试过一些方法,主要问题是获取urllib.request以返回一个文件或类似文件的对象,以便arff.loadarff能够识别并正确读取它。
以下是我尝试的一些方法和结果:
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)
这会产生错误类型错误,因为urlopen返回响应对象。
我也试着按照公认的答案来解决问题。
here
:
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'))
但这也会导致类型错误,因为codecs.iterdecode返回生成器。这一个:
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文件作为文件名,我会得到一个错误,即文件名太长。