Ich habe eine Menge Code, der so aussieht:
%Vor%Ist es möglich, einen Upload so durchzuführen, ohne die Datei irgendwo zu schreiben?
Aktualisieren Ab Paramiko 1.10 können Sie putfo :
%Vor% Anstatt paramiko.SFTPClient.put
zu verwenden, können Sie paramiko.SFTPClient.open
verwenden, wodurch ein file
-ähnliches Objekt geöffnet wird. Sie können dazu schreiben. Etwas wie das:
Beachten Sie, dass es sich lohnen kann, Paramiko-Daten in 32 KiB-Chunks zu füttern, da dies der größte Chunk ist, den das SSH-Protokoll verarbeiten kann, ohne es in mehrere Pakete zu zerlegen.
Ist StringIO
was Sie suchen? ( Dokumentseite )
SFTPClient
s get()
und put()
Funktionen nehmen Pfade und nicht Datei-Handles, was die Sache ein wenig peinlich macht.
Sie könnten einen Wrapper für paramiko.SFTPClient
schreiben, um ihm die gewünschte Funktionalität zu geben.
Hier ist mein bester unerprobter Versuch:
%Vor% Wenn es funktioniert, sollten die Funktionen get
und put
jetzt lokale Datei-Handles anstatt Pfade verwenden.
Ich musste lediglich den Code entfernen, der die Datei aus dem Pfad öffnet, und den Code ändern, der die Größe der Datei für os.fstat
anstelle von os.stat
verwendet.