Как упоминалось в этой теме :
Чтобы открыть порт ниже 1024 в системах Unix / Linux, вам нужно быть «root».
]Я также использовал аргумент
blockquote>-Dorg.eclipse.equinox.http.jetty.port=8080
для изменения порта прослушивания, но это, кажется, игнорируется (в соответствии с stacktrace)Пожалуйста, используйте «
blockquote>-Dorg.osgi.service.http.port=8080
".Как упоминалось в HTTP Service :
org.osgi.service.http.port
- указывает номер порта, который будет использоваться для http обслуживание. Значение по умолчанию для этого свойства - 80 (что требует прав на root), согласно спецификации OSGi.org.osgi.service.http.port.secure
- указывает номер порта, который будет использоваться для безопасного обслуживания HTTP. Значение по умолчанию для этого свойства - 443 (что требует разрешения root) в соответствии со спецификацией OSGi.Возможно, если вы попытаетесь изменить это последнее свойство на значение выше 1024, оно может работать без требующих особых привилегий.
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