Чтение ARFF из ZIP с помощью zipfile и scipy.io.arff

Как упоминалось в этой теме :

Чтобы открыть порт ниже 1024 в системах Unix / Linux, вам нужно быть «root».

]

Я также использовал аргумент -Dorg.eclipse.equinox.http.jetty.port=8080 для изменения порта прослушивания, но это, кажется, игнорируется (в соответствии с stacktrace)

blockquote>

Пожалуйста, используйте «-Dorg.osgi.service.http.port=8080 ".

blockquote>

Как упоминалось в HTTP Service :

  • org.osgi.service.http.port - указывает номер порта, который будет использоваться для http обслуживание. Значение по умолчанию для этого свойства - 80 (что требует прав на root), согласно спецификации OSGi.
  • org.osgi.service.http.port.secure - указывает номер порта, который будет использоваться для безопасного обслуживания HTTP. Значение по умолчанию для этого свойства - 443 (что требует разрешения root) в соответствии со спецификацией OSGi.

Возможно, если вы попытаетесь изменить это последнее свойство на значение выше 1024, оно может работать без требующих особых привилегий.

1
задан Bernhard Bodenstorfer 19 March 2019 в 07:44
поделиться

1 ответ

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 в памяти. Используйте TextIOWrapper с encoding='utf-8'. Используйте этот буферизованный текстовый объект в памяти в loadarff.

Редактировать: Turnsout zfile.open() возвращает объект, похожий на файл, поэтому все вышеперечисленное можно выполнить с помощью:

zfile = ZipFile('archive.zip', 'r')
in_mem_fo = TextIOWrapper(zfile.open('datafile.arff'), encoding='ascii')
data = loadarff(in_mem_fo)

Благодаря @Bernhard

0
ответ дан Nihal Sangeeth 19 March 2019 в 07:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: