Seite 1 von 1
FTP.dir() in Datei schreiben
Verfasst: Donnerstag 5. April 2007, 15:52
von BoOnOdY
Hey, ich weiß, dass die Frage bestimmt doof ist, aber ich komm leider gerade net weiter.
Code: Alles auswählen
import ftplib
ftp=ftplib.FTP("1**.1**.3.***")
ftp.login("admin", "*****")
ftp.cwd("\\cdr\\checkout")
f=file("E:\AEP\\log.log","w")
f.writelines(ftp.dir())
f.close()
da bekomm ich immer den Fehler "writelines reuqires iterable argument "
Bin noch nicht so sehr bewandert in Python.
Kennt einer ein gutes Tutorial in dem man lernt Sachen in Dateien zu schreiben, auszulesen und auch zu vergleichen. Also ein bisschen ausführlicher, nicht so grob wie in den ganzen anderen tutorials.
Weil ich brauch das jetzt ziemlich ausführlich.
Gruß BoOnOdY
Verfasst: Donnerstag 5. April 2007, 16:19
von EnTeQuAk
Ich habe jetzt gar keine Erfahrung mit der FTPlib. Aber rein ausm Bauch heraus würde ich sagen, das ``ftp.dir()`` keine Liste/Tupel oder ein anderes iterierbares Objekt zurückgibt.
``f.writelines()`` benötigt aber ein iterierbares Objekt.
Nach ein wenig austesten hab ich folgendes verwunderliches herausbekommen:
Code: Alles auswählen
In [6]: type(ftp.dir())
-rw-r--r-- 1 ente ente 8478 Mar 13 16:22 Bussysteme-Dokuementation.zip
drwxr-xr-x 5 ente ente 4096 Mar 10 10:47 development
drwxr-xr-x 4 ente ente 4096 Mar 20 17:08 entes-world
drwxr-xr-x 2 ente ente 4096 Mar 11 16:42 public_html
drwxr-xr-x 12 ente ente 4096 Apr 4 11:11 trac
Out[6]: <type 'NoneType'>
Sorry, jetz bin ich auch ein wenig überrascht.
würde mich ma interessieren
Verfasst: Donnerstag 5. April 2007, 16:26
von Y0Gi
Richtig, FTP.dir() gibt ("fast immer") ein UNIX-Verzeichnislisting als String zurück.
Folgendes habe ich irgendwo im ASPN-Cookbook gefunden und für sehr nützlich befunden (insbesondere die Verwendung von .split() ist sehr interessant):
Code: Alles auswählen
def parse_line(line):
"""Callback-Funktion zum Verarbeiten der Zeilen."""
columns = line.split(None, 8)
print columns
ftp.retrlines('LIST', parse_line)
Verfasst: Donnerstag 5. April 2007, 16:31
von gerold
EnTeQuAk hat geschrieben:Sorry, jetz bin ich auch ein wenig überrascht.
Hi EnTeQuAk!
Lies dir noch mal den FTP-Teil in der Python-Dokumentation durch.
Die meisten FTP-Funktionen, die etwas vom FTP-Server holen, erwarten eine Funktion, an die sie beim Empfangen als ersten Parameter den empfangenen Text übergeben können.
``dir()`` schreibt den Ordnerinhalt nach ``stdout``, wenn diese Funktion nicht angegeben ist.
Hier ein Beispiel:
Code: Alles auswählen
>>> import ftplib
>>> ftp = ftplib.FTP(host='ftp.suse.com', user='anonymous')
>>> ret = []
>>> ftp.dir(ret.append)
>>> ret
['drwxr-xr-x 2 root root 4096 May 26 2004 bin', 'drwxr-xr-x
2 root root 4096 May 26 2004 dev', 'drwxr-xr-x 2 root root
4096 Sep 10 2004 etc', 'drwxr-xr-x 2 root root 4096 May 26
2004 lib', 'drwxr-xr-x 2 root root 4096 Feb 13 2006 msgs', '
drwxr-xr-x 8 ftp root 4096 Apr 04 23:12 pub', 'drwxr-xr-x 3
root root 4096 May 26 2004 usr']
>>> ret = []
>>> ftp.retrlines("LIST", ret.append)
'226 Directory send OK.'
>>> ret
['drwxr-xr-x 2 root root 4096 May 26 2004 bin', 'drwxr-xr-x
2 root root 4096 May 26 2004 dev', 'drwxr-xr-x 2 root root
4096 Sep 10 2004 etc', 'drwxr-xr-x 2 root root 4096 May 26
2004 lib', 'drwxr-xr-x 2 root root 4096 Feb 13 2006 msgs', '
drwxr-xr-x 8 ftp root 4096 Apr 04 23:12 pub', 'drwxr-xr-x 3
root root 4096 May 26 2004 usr']
>>>
mfg
Gerold
Verfasst: Donnerstag 5. April 2007, 16:44
von EnTeQuAk
gerold hat geschrieben:EnTeQuAk hat geschrieben:Sorry, jetz bin ich auch ein wenig überrascht.
Hi EnTeQuAk!
Lies dir noch mal den FTP-Teil in der Python-Dokumentation durch.
hi hi
Ich wusste es
nächtes mal werde ich es machen, bevor ich versuche Hilfe zu geben
Die meisten FTP-Funktionen, die etwas vom FTP-Server holen, erwarten eine Funktion, an die sie beim Empfangen als ersten Parameter den empfangenen Text übergeben können.
``dir()`` schreibt den Ordnerinhalt nach ``stdout``, wenn diese Funktion nicht angegeben ist.
Das hab ich nun auch herausgefunden *grinz*
Gut, bin still... ich höre, das ser Threadersteller etwas sagen möchte
Verfasst: Donnerstag 5. April 2007, 16:45
von BoOnOdY
ich bin momentan noch überwältigt
aber ich bin gerade ma am austesten