FTP Upload Problem

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
Mathmos
User
Beiträge: 36
Registriert: Dienstag 10. August 2010, 21:31

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
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.
Benutzeravatar
Mathmos
User
Beiträge: 36
Registriert: Dienstag 10. August 2010, 21:31

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.
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.
Benutzeravatar
Mathmos
User
Beiträge: 36
Registriert: Dienstag 10. August 2010, 21:31

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.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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
Das Leben ist wie ein Tennisball.
Drache
User
Beiträge: 51
Registriert: Montag 29. November 2010, 21:51
Wohnort: Berlin
Kontaktdaten:

root.update()
bringt dich hier weiter.

Bis bald
Drache
Antworten