Datei vom FTP-Server holen. Bitte um schnelle Hilfe.

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Minicar
User
Beiträge: 24
Registriert: Montag 1. März 2010, 10:26

Hallo =)
ich habe die Aufgabe die Datei die in meinem LineEdit steht vom FTP-Server zu holen. Also ich gebe z.B. test.txt in die TextBox ein, drücke enter und er soll dann die Datei runterladen.
Kann mir da vielleicht jemand helfen?
Ich mach das noch nicht lange und weiß nicht wie ich das machen soll, es sollte aber bis Freitag fertig sein.
hier erstmal das was ich schon habe

Code: Alles auswählen

import sys
from PyQt4 import QtGui, QtCore
import ftplib
import webbrowser

class Button(QtGui.QPushButton):
    def __init__(self, title, parent):
        QtGui.QPushButton.__init__(self, 'Enter', parent)
        self.setAcceptDrops(True)
       
    def dragEnterEvent(self, event):
        if event.mimeData().hasFormat('text/plain'):
            event.accept()
        else:
            event.ignore()

    def dropEvent(self, event):
        self.setText(event.mimeData().text())

 
class DragDrop(QtGui.QDialog):
    def __init__(self, parent=None):
        QtGui.QDialog.__init__(self, parent)

        self.resize(400, 200)
        self.setWindowTitle('FTP_GUI')

        edit = QtGui.QLineEdit('', self)
        edit.resize(350,20)
        a = edit.setText
        edit.setDragEnabled(True)
        edit.move(30, 65)
   
        button = Button("Button", self)
        button.move(30, 100)

        self.Label1 = QtGui.QLabel('Filename', self)
        self.Label1.move (30, 45)

        self.Label2 = QtGui.QLabel('', self)
        self.Label2.resize(300,20)
        self.Label2.move (30, 135)

        con = button.connect(button, QtCore.SIGNAL("clicked()"), \
                             self.test)

        #ftp.connect()
        #ftp.quit()
        conn = edit.connect(edit, QtCore.SIGNAL("textChanged(QString)"),\
                     self.Label2, QtCore.SLOT("setText(QString)"))
    def test(self):
        ftp = webbrowser.open("mein FTP-Server")
        #ftp.connect()
        #ftp.login("", "")
        bild=""
        def f(data):
            global bild
            bild += data
        ftp.retrbinary("a", f)
        #self.Label1.SetText(bild)
        #ftp.quit

app = QtGui.QApplication(sys.argv)
bild = "" 
icon = DragDrop()
icon.show()
app.exec_()
wäre echt super, wenn mir da jemand helfen könnte, ist sehr wichtig.
Achso bitte nicht auf die Suche oder andere Sachen hinweisen. In der Suche habe ich nichts gefunden für mich. Wäre schön wenn ihr das an Hand von meinem Code machen könntet.

Liebe Grüße
Minicar :lol:
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

Erster Treffer bei Google "python ftp" --> http://docs.python.org/library/ftplib.html

Und da ist sogar gleich oben ein Beispiel, das exakt das tut, was du willst:

Code: Alles auswählen

>>> from ftplib import FTP
>>> ftp = FTP('ftp.cwi.nl')   # connect to host, default port
>>> ftp.login()               # user anonymous, passwd anonymous@
>>> ftp.retrbinary('RETR README', open('README', 'wb').write)
'226 Transfer complete.'
>>> ftp.quit()
Bottle: Micro Web Framework + Development Blog
Minicar
User
Beiträge: 24
Registriert: Montag 1. März 2010, 10:26

hm ich geb wohl zu kompliziertes bei google ein ^^ich suche die ganze zeit nach ftp-server datei download python =)
ich danke dir, werde es gleich mal versuchen
Minicar
User
Beiträge: 24
Registriert: Montag 1. März 2010, 10:26

Code: Alles auswählen

import sys
from PyQt4 import QtGui, QtCore
import ftplib
import webbrowser

class Button(QtGui.QPushButton):
    def __init__(self, title, parent):
        QtGui.QPushButton.__init__(self, 'Enter', parent)
        self.setAcceptDrops(True)
       
    def dragEnterEvent(self, event):
        if event.mimeData().hasFormat('text/plain'):
            event.accept()
        else:
            event.ignore()

    def dropEvent(self, event):
        self.setText(event.mimeData().text())

 
class DragDrop(QtGui.QDialog):
    def __init__(self, parent=None):
        QtGui.QDialog.__init__(self, parent)

        self.resize(400, 200)
        self.setWindowTitle('FTP_GUI')

        edit = QtGui.QLineEdit('', self)
        edit.resize(350,20)
        a = edit.setText
        edit.setDragEnabled(True)
        edit.move(30, 65)
   
        button = Button("Button", self)
        button.move(30, 100)

        self.Label1 = QtGui.QLabel('Filename', self)
        self.Label1.move (30, 45)

        self.Label2 = QtGui.QLabel('', self)
        self.Label2.resize(300,20)
        self.Label2.move (30, 135)

        con = button.connect(button, QtCore.SIGNAL("clicked()"), \
                             self.test)

        #ftp.connect()
        #ftp.quit()
        conn = edit.connect(edit, QtCore.SIGNAL("textChanged(QString)"),\
                     self.Label2, QtCore.SLOT("setText(QString)"))

        

        
    def test(self):
        ftp = ftplib.FTP('ftp://ftp.test.de/')
        ftp.connect()
        ftp.login()               
        ftp.retrbinary('RETR README', open('README', 'wb').write) 
        
        ftp.quit() 
  
        #ftp = ftplib.FTP("localhost")
     #   ftp = webbrowser.open("ftp://ftp.test.de/")
        #ftp.connect()
        #ftp.login("", "")
      #  bild=""
      #  def f(data):
      #      global bild
      #      bild += data
      #  ftp.retrbinary("a", f)
        #self.Label1.SetText(bild)
        #ftp.quit


     
 
app = QtGui.QApplication(sys.argv)
#bild = "" 
icon = DragDrop()
icon.show()
app.exec_()
so sollte das dann funktionieren??
hier geht gar nichts. Sry aber ich mach das jetzt gerade mal ne Woche. Programmierung ist recht neu für mich.
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

Natürlich passiert garnichts da ftp://ftp.test.de/ nicht existiert.
Bottle: Micro Web Framework + Development Blog
Minicar
User
Beiträge: 24
Registriert: Montag 1. März 2010, 10:26

jaaa.. habs nur so genannt weils ne firmenadd ist, funktioniert trotz richtiger adresse nicht.


Fehlermeldung:
Errno 11001 getaddrinfo failed
Benutzeravatar
snafu
User
Beiträge: 6881
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Lass mal das `ftp://` weg.
Minicar
User
Beiträge: 24
Registriert: Montag 1. März 2010, 10:26

funktioniert auch nicht. selbe Fehlermeldung
Minicar
User
Beiträge: 24
Registriert: Montag 1. März 2010, 10:26

noch ideen?
dahaze
User
Beiträge: 75
Registriert: Freitag 13. März 2009, 10:57
Wohnort: im Schwabenland

hab zwar noch nicht damit gearbeitet aber vielelicht erreichst du die adresse nicht (FW?)
Kann deine FTP-Adresse vielleicht nicht aufgeloest werden? Vielleicht mal direkt mit der IP des FTP testen.....
Oder nutzt dein ftp ein anderen Port als 21?

http://docs.python.org/library/ftplib.h ... TP.connect

Kannst du ihn anpingen?
Minicar
User
Beiträge: 24
Registriert: Montag 1. März 2010, 10:26

ich kann ihn mit webbrowser.open(FTP-Server) problemlos öffnen
dahaze
User
Beiträge: 75
Registriert: Freitag 13. März 2009, 10:57
Wohnort: im Schwabenland

Hmmm...
Ist bei deinem Browser vielleicht ein bestimmter Proxy eingestellt über den die Verbindung läuft? Das ist bei Firmen oft der Fall.
Wie man den allerdings dann einarbeitet, weiss ich nicht.
Wie gesagt, noch nie damit beschäftigt.^^ :wink:

Gruß,
DaHaze
Minicar
User
Beiträge: 24
Registriert: Montag 1. März 2010, 10:26

wie gesagt ich komme sonst auch drauf, ohne irgendein problem.
kann alles öffnen. auch mit nem andern server habe ich die gleiche fehlermeldung
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Ist diese ominöse Fehlermeldung geheim? ;-)

Sebastian
Das Leben ist wie ein Tennisball.
Minicar
User
Beiträge: 24
Registriert: Montag 1. März 2010, 10:26

nein

Fehlermeldung:
Errno 11001 getaddrinfo failed

hatte sie oben schonmal erwähnt
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Minicar hat geschrieben:wie gesagt ich komme sonst auch drauf, ohne irgendein problem.
kann alles öffnen. auch mit nem andern server habe ich die gleiche fehlermeldung
Das kann irgendein "Personal Firewall"-Geraffel sein. Der Browser darf dann möglicherweise nach draußen telefonieren und Python nicht.
Minicar
User
Beiträge: 24
Registriert: Montag 1. März 2010, 10:26

okay... und was kann ich da machen?
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Minicar hat geschrieben:okay... und was kann ich da machen?
Das weiß ich nicht. Ich kenne deine Arbeitsumgebung nicht, weiß nicht was da möglicherweise installiert ist und schon gar nicht wie man es konfiguriert.

Du könntest mal versuchen, auf deiner Entwicklungsmaschine einen FTP-Server zu installieren und den anzusprechen. Sollte das funktionieren, dann kannst du ziemlich sicher sein, dass dir beim Netzzugriff eine andere Software den Zugriff blockiert.
Minicar
User
Beiträge: 24
Registriert: Montag 1. März 2010, 10:26

ich werds zu hause testen mit meinem eigenen ftp-server wenn das geht weiß ich es liegt am firmennetz ^^ und wenn nicht liegts am programm
Minicar
User
Beiträge: 24
Registriert: Montag 1. März 2010, 10:26

falls ihr aber in der Zwischenzeit noch Ideen habt, bitte einfach schreiben was euch einfällt. ich bin für jeden Vorschlag dankbar.

Danke bis jetzt schonmal

LG Minicar
Antworten