Ich hätte wieder eine Frage. Und zwar hab ich ein Python-Skript geschrieben, dass eine Datei über FTP zu einem gegebenen Server hochlädt (siehe 1. Listing). Das funktioniert auch gut. Datei wird hochgeladen und Funktion finished() wird aufgerufen. Wenn ich den Code für den Upload in eine eigene Funktion upload() kopiere, dann geht leider nichts mehr. (siehe 2. Listing)
Code: Alles auswählen
import sys
from PyQt5.QtCore import QUrl
from PyQt5.QtCore import QFile
from PyQt5.QtNetwork import QNetworkAccessManager
from PyQt5.QtNetwork import QNetworkRequest
from PyQt5.QtCore import QCoreApplication
def finished():
print("finished")
def error():
print("error")
def main():
app = QCoreApplication(sys.argv)
url = QUrl("ftp://domain.at/upload/test.jpg")
url.setUserName("jw202")
url.setPassword("mainpassword")
url.setPort(21)
file = QFile("fsm.jpg")
file.open(QFile.ReadOnly)
nam = QNetworkAccessManager()
req = QNetworkRequest(url)
rep = nam.put(req, file)
rep.finished.connect(finished)
rep.error.connect(error)
return app.exec_()
main()
Auslagerung in eine Funktion update(). Nicht funktionsfähig. Request kommt nie an, Signal wird nicht aktiviert
Code: Alles auswählen
def finished():
print("finished")
def upload():
url = QUrl("ftp://domain.at/upload/test.jpg")
url.setUserName("jw202")
url.setPassword("dasdfsadf")
url.setPort(21)
file = QFile("fsm.jpg")
file.open(QFile.ReadOnly)
nam = QNetworkAccessManager()
req = QNetworkRequest(url)
rep = nam.put(req, file)
rep.finished.connect(finished)
rep.error.connect(error)
def error():
print("error")
def main():
app = QCoreApplication(sys.argv)
upload()
return app.exec_()
main()
Meine Idee wäre, dass die Garbage Collection den QNetworkAccessManager() frühzeitig löscht, wenn man aus der Funktion wieder heraus geht. Hab daher die Zeile
Code: Alles auswählen
nam = QNetworkAccessManager()
Bin leider mit meinen Ideen am Ende
Vielleicht wüsste jemand einen guten Ansatz.
Vielen Dank schon im Voraus
Liebe Grüße