Ich habe eine große Datei in meinem FTP, und ich muss es in Google Cloud-Speicher schreiben. Mein erster Gedanke wäre, es von FTP in lokale Datei herunterladen und dann lokale Datei an Remote-Speicher übertragen. Aber ich würde es lieber tun, ohne es lokal herunterzuladen. Bisher kam ich mit dem folgenden Code auf:Python Stream Daten zwischen Quellen
from ftplib import FTP
import io
ftp = ftp = FTP('example.com')
ftp.voidcmd('TYPE I')
sock = ftp.transfercmd('RETR file.csv')
raw = io.BytesIO()
file = io.BufferedRandom(raw)
blob = bucket.blob('blobname.csv', chunk_size=262144) # gcs blob
blob.upload_from_file(file, content_type='text/csv', rewind=True)
Aber ich bekomme:
Traceback (most recent call last):
File "/home/tsh/example.py", line 65, in <module>
file = io.BufferedRandom(raw)
io.UnsupportedOperation: File or stream is not seekable.
Gibt es eine Möglichkeit, um Rohrdaten von ftp zu Cloud-Speicher (oder eine andere Remote-Ressource) ohne Download es zur lokalen Maschine? Ich benutze Python 3.6.
Vielen Dank für den Vorschlag rclone, aber ich muss es in reinem Python, ohne Subprozess. – tsh