2016-11-15 2 views
1

ist sowieso vorhanden, um eine externe Datei (d. H. AWS S3) in numpy? Zu laden/zu lesen. Ich habe mehrere Npy-Dateien in S3 gespeichert. Ich habe versucht, auf sie durch eine vorgestückte S3 URL zuzugreifen, aber es scheint, dass numpy.load Methode oder np.genfromtxt sie nicht lesen können.Lade Npy-Datei von S3 in Python

Ich möchte nicht Dateien im lokalen Dateisystem speichern und dann auf numpy laden.

Irgendeine Idee?

+0

Natürlich müssen Sie einige zusätzliche Schicht die Arbeit Web-Protokoll alle tun! Numpys IO ist wahrscheinlich nur für dateibasiertes IO ausgelegt. In Python3 könnten Sie '' 'import request; Import von BytesIO; anfrage = requests.get (url); np.load (BytesIO (request.content)) '' '. – sascha

+0

Natürlich nimmt mein Snippet an, dass der S3-Link ein öffentlicher ist, ohne dass eine Authentifizierung erforderlich ist. Ich weiß nicht, ob das der Fall ist. Wenn nicht, benötigen Sie eine Bibliothek, die diese Berechtigung für den Zugriff auf die Dateien verwendet! – sascha

+0

Können Sie die Dateien mit 'requests' lesen? –

Antwort

0

Ich hatte Erfolg mit boto und StringIO. Verbinden Sie sich mit S3 über Boto und holen Sie sich Ihren Bucket. Dann lesen Sie die Datei mit folgendem Code in numpy:

import numpy as np 
    from StringIO import StringIO 
    key=bucket.get_key('YOUR_KEY') 
    data_string=StringIO(key.get_contents_as_string()) 
    data = np.load(data_string) 

Ich bin nicht sicher, es ist der effizienteste Weg, aber es ist nicht eine öffentliche URL erforderlich.

Cheers, Michael

Verwandte Themen