Seite 1 von 1

FTP Upload Problem

Verfasst: Dienstag 10. August 2010, 21:41
von Mathmos
Hallo

Ich bin momentan dabei mich in Python einzuarbeiten und möchte mir gerne ein Upload-GUI erstellen.
Allerdings habe ich da momentan ein par probleme.
Undzwar werden die flv Dateien nicht korrekt hochgeladen. Kleiner Dateien, wie zb txt oder py, scheinen komplett gochgeladen zu werden.
Ich habe ftp.storbinary und ftp.storlines ausprobiert, aber leider funktionieren beide nicht richtig.

Code: Alles auswählen

from Tkinter import *
from ftplib import FTP
from tkFileDialog import *
import tkMessageBox
import os

def Videodatei():
	global myPath, myFile
		
	myPath = askopenfilename(filetypes=[("Flash Video Files", "flv")])
	print myPath

	myDir, myFile = os.path.split(myPath)
	print myDir
	print myFile

	entDatei.delete(0,END)
	entDatei.insert(END, myPath)

def Upload():

	ftp = FTP("HOST")	
	ftp.login("USER", "PW")

	try:
		f = open(myPath, "r")
		ftp.cwd("pub")
		ftp.storbinary("STOR " + myFile, f) 
		ftp.quit()
		f.close()
	except:
		tkMessageBox.showwarning('Achtung','Es ist ein Fehler aufgetreten!')

	
root=Tk()
root.title("GTS Uploader")
root.geometry("500x250")

labDatei=Label(root,text=u"Datei")
labDatei.pack()

entDatei=Entry(root,width=60)
entDatei.pack()

butVideodatei=Button(root,text="Datei w\xe4hlen",command=Videodatei)
butVideodatei.pack()

butFertig=Button(root,text="Fertig",command=Upload)
butFertig.pack()

root.mainloop()
Ich hoffe ihr könnt mir helfen.
Danke schonmal

Re: FTP Upload Problem

Verfasst: Dienstag 10. August 2010, 22:10
von BlackJack
@Mathmos: Binärdateien muss man auch im Binärmodus öffnen. Sonst verändert zumindest Windows den Inhalt beim einlesen.

Ansonsten solltest Du Dir mal den Python Style Guide a.k.a. PEP8 durchlesen, die Sternchen-Importe sein lassen, und vergessen dass es das Schlüsselwort ``global`` gibt. Wenn Daten in Funktionen hineinkommen oder rausgehen sollen, macht man die Namen nicht ``global`` sondern verwendet Argumente und Rückgabewerte.

Re: FTP Upload Problem

Verfasst: Dienstag 10. August 2010, 22:35
von Mathmos
OK Danke.
Jetzt klappt schonmal das vollständige hochladen der Dateien.

Den Style Guide werde ich mir mal bei Gelegenheit zu gemüte führen.

Wieso keine Sterchnen-Importe? Ich habe diese so in Beispielen gefunden.

Wo liegen denn die Vorteile von Argumenten und Rückgabewerten im gegensatz zu "global"?
Wäre nett wenn du mir da kein kleines Beispiel zu aufzeigen könntest.

Re: FTP Upload Problem

Verfasst: Dienstag 10. August 2010, 23:23
von BlackJack
@Mathmos: Sternchen-Importe und ``global`` "müllen" den Modulnamensraum voll und man kann irgendwann nicht mehr nachvollziehen wo welcher Name eigentlich herkommt und wo welche Werte, wann verändert werden.

Re: FTP Upload Problem

Verfasst: Freitag 20. August 2010, 08:38
von Mathmos
Hallo

ich wollte mal fragen ob man es umgehen kann, dass das programm keine rückmeldung mehr gibt beim uploaden?
sobalt ich auf den button zum uploaden klicke, bleibt dieser eingedrückt und das programm reagiert nicht mehr, bis der upload fertig ist.

Re: FTP Upload Problem

Verfasst: Freitag 20. August 2010, 08:49
von EyDu
Hallo.
Mathmos hat geschrieben:ich wollte mal fragen ob man es umgehen kann, dass das programm keine rückmeldung mehr gibt beim uploaden?
sobalt ich auf den button zum uploaden klicke, bleibt dieser eingedrückt und das programm reagiert nicht mehr, bis der upload fertig ist.
Du könntest das Hochladen in einem Thread laufen lassen, das ist im Zusammenhang mit GUIs aber nicht ganz trivial. Nützlich ist in diesem Zusammenhang auch noch die after-Methode. Die Suchfunktion sollte zu "thread after" genug Hinweise liefern.

Sebastian

Re: FTP Upload Problem

Verfasst: Sonntag 26. Dezember 2010, 14:02
von Drache
root.update()
bringt dich hier weiter.

Bis bald
Drache