Liest eine Datei im Puffer von FTP Python

8

Ich versuche eine Datei von einem FTP-Server zu lesen. Die Datei ist eine .gz -Datei. Ich würde gerne wissen, ob ich Aktionen für diese Datei ausführen kann, während der Socket geöffnet ist. Ich habe versucht, dem zu folgen, was in zwei StackOverflow-Fragen auf Dateien lesen, ohne auf die Festplatte zu schreiben und Lesen von Dateien von FTP ohne Download , war aber nicht erfolgreich.

Ich weiß, wie man Daten / Arbeit an der heruntergeladenen Datei extrahiert, aber ich bin mir nicht sicher, ob ich es im laufenden Betrieb tun kann. Gibt es eine Möglichkeit, sich mit der Site zu verbinden, Daten in einen Puffer zu bekommen, möglicherweise Daten zu extrahieren und zu beenden?

Beim Versuch mit StringIO habe ich den Fehler:

%Vor%

Ich muss nur wissen, wie ich Daten in eine Variable bekommen und sie durchlaufen kann, bis die Datei von FTP gelesen wird.

Ich schätze Ihre Zeit und Hilfe. Vielen Dank!

    
smandape 12.09.2013, 19:21
quelle

3 Antworten

17

Stellen Sie sicher, dass Sie sich zuerst beim FTP-Server anmelden. Verwenden Sie anschließend retrbinary , wodurch die Datei im Binärmodus abgerufen wird. Es verwendet einen Rückruf für jeden Teil der Datei. Sie können dies verwenden, um es in eine Zeichenfolge zu laden.

%Vor%

Bonuspunkte: Wie wäre es, wenn wir die Saite dekomprimieren, während wir gerade dabei sind?

Einfacher Modus, Datenstring über

verwendend %Vor%

Etwas bessere, vollständige Lösung :

%Vor%

In der Realität wäre es viel besser, im laufenden Betrieb zu dekomprimieren, aber ich sehe keinen Weg, dies mit den eingebauten Bibliotheken zu tun (zumindest nicht einfach).

    
Kyle Kelley 12.09.2013, 20:07
quelle
5

Es gibt zwei einfache Möglichkeiten, eine Datei per FTP herunterzuladen und lokal zu speichern:

  1. Verwenden von ftplib :

    %Vor%
  2. Verwenden von urllib

    %Vor%

Wenn Sie die Datei nicht herunterladen und in einer Datei speichern möchten, sondern sie schrittweise verarbeiten möchten, empfehle ich die Verwendung von urllib2 :

%Vor%

, die Ihre Datei Zeile für Zeile ausgibt.

    
nickie 12.09.2013 19:37
quelle
0

Das ist nicht möglich. Um Daten auf dem Server zu verarbeiten, müssen Sie Ausführungsberechtigungen haben, sei es für ein Shell-Skript, das Sie senden möchten, oder für einen SQL-Zugriff.

FTP ist reine Dateiübertragung, keine Ausführung erlaubt. Sie müssen entweder den SSH-Zugriff aktivieren, die Daten in eine Datenbank laden und mit Abfragen darauf zugreifen oder die Datei mit urllib herunterladen und sie dann lokal bearbeiten, wie folgt:

%Vor%

Insbesondere denke ich, dass der dritte die einzige Lösung ohne Aufwand ist.

    
Stefano Sanfilippo 12.09.2013 19:40
quelle

Tags und Links