Wie zu Lesen, image-Datei von S3-buckets direkt in den Speicher?
Ich habe den folgenden code
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
import boto3
s3 = boto3.resource('s3', region_name='us-east-2')
bucket = s3.Bucket('sentinel-s2-l1c')
object = bucket.Object('tiles/10/S/DG/2015/12/7/0/B01.jp2')
object.download_file('B01.jp2')
img=mpimg.imread('B01.jp2')
imgplot = plt.imshow(img)
plt.show(imgplot)
und es funktioniert. Aber das problem es lädt die Datei in das aktuelle Verzeichnis als erstes. Ist es möglich, die Datei Lesen und entschlüsseln es als Bild direkt im RAM?
InformationsquelleAutor Dims | 2017-05-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Greg Merritt ' s Antwort unten ist die bessere Methode.
Möchte ich vorschlagen, mit Python NamedTemporaryFile in
tempfile
Modul. Es erstellt temporäre Dateien, werden Sie gelöscht, wenn die Datei geschlossen wird (Danke an @NoamG)Danke! Ich war Missverständnis, wie
tempfile
Modul funktioniert. Aktualisiert meine Antworten.InformationsquelleAutor Hyeungshik Jung
Ich würde vorschlagen, mit io-Modul die Datei zu Lesen, direkt auf den Arbeitsspeicher, ohne den Umweg über eine temporäre Datei an alle.
Beispiel:
Könnten Sie auch
io.BytesIO
wenn Ihre Daten ist Binär.Ich bekomme den gleichen Fehler: TypeError: string-argument erwartet, hab 'bytes'
Wenn "string-argument erwartet, bekam bytes" ist Ihr Fehler, denken Sie daran, zu versuchen
io.BytesIO()
stattio.StringIO()
. Für boto3 und python 3, das ist der SchlüsselInformationsquelleAutor Greg Merritt
Streaming-Bild ist möglich, indem Sie die Datei-format in
imread()
.InformationsquelleAutor Adrian Tofting
InformationsquelleAutor Evgeniy