Vielen Dank Blackjack!
So habe, ich habe jetzt das mit den Strings verstanden
Kann es sein, dass Du Leerzeichen und Tabulatorzeichen gemischt hast? Das sollte man nicht machen. Am besten immer nur mit Leerzeichen einrücken, dann ist man auf der sicheren Seite.
Das Problem war, dass ich mit der IDLE angefangen hab, und dann mit Scite weitergemacht hab. Jetzt bin ich aber wieder vim (vimrc: set tabstop=4) und alles ist gut
Hier läuft einiges schief. `FTP()` erwartet als zweites Argument den Benutzernamen, für den Fall das man sich als bestimmter Benutzer bei dem Server anmelden will und nicht als "anonymous". Willst Du wirklich 'w' als Benutzernamen an dieser Stelle?
Sorry, ich weis nicht wo mein Kopf war.... Musik und Python verträgt sich bei mir nicht
Jetzt wo ich das mit den Strings weiß, habe ich das Script noch ein bisschen erweitert. Die Verzeichnissauflistung und der Verzeichnisswechsel funktioniert, aber mit dem Download stimmt irgendetwas nicht.
Python spuckt
Exception in Tkinter callback
Traceback (most recent call last):
File "D:\programme\Python_2_5\lib\lib-tk\Tkinter.py", line 1403, in __call__
return self.func(*args)
File "C:\Dokumente und Einstellungen\Benny Metzger\Desktop\programming\python\tkinter\forum tst\ftpeingabeforumansweranddownload.py", line 60, in ftpdownload
ftp.retrbinary('RETR', self.entry3.get(), f.write)
File "D:\programme\Python_2_5\lib\ftplib.py", line 379, in retrbinary
conn = self.transfercmd(cmd, rest)
File "D:\programme\Python_2_5\lib\ftplib.py", line 345, in transfercmd
return self.ntransfercmd(cmd, rest)[0]
File "D:\programme\Python_2_5\lib\ftplib.py", line 327, in ntransfercmd
resp = self.sendcmd(cmd)
File "D:\programme\Python_2_5\lib\ftplib.py", line 241, in sendcmd
return self.getresp()
File "D:\programme\Python_2_5\lib\ftplib.py", line 216, in getresp
raise error_perm, resp
error_perm: 550 Failed to open file.
aus. Irgendetwas stimmt da mit den permissions nicht. Ich will doch nur lesen. Und die README auf dem Debian Server ist für anonymous lesbar.
Wäre Super wenn mir jemand wieder helfen könnte
Vielen Dank nochmal!
mfg benny
Code: Alles auswählen
import ftplib
import os
import Tkinter as tk
class Application(object):
def __init__(self):
hauptfenster = tk.Tk()
#Adresse
tk.Label(hauptfenster, text="Adresse", pady=10).grid(row=0, column=0)
#Verzeichnis auf SRV
tk.Label(hauptfenster, text="Verzeichnis SRV", pady=10).grid(row=3, column=0)
#Quelldatei
tk.Label(hauptfenster, text='Quelldatei', pady=10).grid(row=5, column=0)
#Zielordner
tk.Label(hauptfenster, text="Zielordner", pady=10).grid(row=6, column=0)
#Adresse
self.entry1 = tk.Entry(hauptfenster)
self.entry1.grid(row=0, column=1)
#Verzeichnis auf SRV
self.entry2 = tk.Entry(hauptfenster)
self.entry2.grid(row=3, column=1)
#Quelldatei
self.entry3 = tk.Entry(hauptfenster)
self.entry3.grid(row=5, column=1)
#Zielordner
self.entry4 = tk.Entry(hauptfenster)
self.entry4.grid(row=6, column=1)
#Nur im Programm, um in IDLE zu gucken, ob connection established
button1 = tk.Button(hauptfenster, text="test", command=self.ftplogin).grid(row=2, column=1)
#Directory Wechsel
button2 = tk.Button(hauptfenster, text="Wechsel", command=self.ftpchange).grid(row=4, column=1)
#Download Button
button3 = tk.Button(hauptfenster, text="download", command=self.ftpdownload).grid(row=7, column=1)
hauptfenster.mainloop()
#Adresse, login Teil
def ftplogin(self):
ftp = ftplib.FTP(self.entry1.get())
ftp.login()
ftp.dir()
def ftpchange(self):
ftp = ftplib.FTP(self.entry1.get())
ftp.login()
ftp.cwd(self.entry2.get())
#Download teil
def ftpdownload(self):
ftp = ftplib.FTP(self.entry1.get())
ftp.login()
self.ftpchange()
f=file(self.entry4.get(), 'w')
ftp.retrbinary('RETR', self.entry3.get(), f.write)
f.close()
def main():
application = Application()
if __name__ == '__main__':
main()
#Testfile: ftp://ftp.debian.org/debian/README