shutil.copy über tausende Dateien. Mit Threads?
Verfasst: Montag 8. Dezember 2008, 08:56
Hallo Community,
ich habe wieder mal eine Laienfrage. Ich habe ein Progrämmchen geschrieben, welches sehr viele Dateien nach einem bestimmten Kriterium von einem Verz. in ein anderes kopiert. Dazu habe ich mit PyQt eine kleine grafische Oberfläche gemacht mit der man bequem die Quelle und das Ziel-Verz. aussuchen kann. Und den Status des Kopiervorgangs wollte ich in einem Textfenster "ausgabe" ausgeben lassen.
Nun ist es aber so, dass wenn ich die Methode starte werden die Dateien zwar wie gewünscht kopiert, jedoch bekomme ich keine laufende Ausgabe im meinem self.ausgabe.setText(), sondern nur am Ende des Kopiervorgangs werden mir auf einen Schlag alle Zeilen angezeigt. Außerdem ist das GUI-Fenster während des Kopierens nicht ansprechbar und gibt dem System keine Rückmeldung.
Wie bekomme ich das so hin, dass mein GUI-Fenster während des kopierens ordentlich, wie es z.b: in einer Konsole der Fall ist die kopierten Datensätze anzeigt und dabei nicht hängen bleibt? Also ich vermute die Lösung liegt in den Threads, aber dafür fehlt mir in Python (oder auch allgemein) die Übersicht.
Danke.
ich habe wieder mal eine Laienfrage. Ich habe ein Progrämmchen geschrieben, welches sehr viele Dateien nach einem bestimmten Kriterium von einem Verz. in ein anderes kopiert. Dazu habe ich mit PyQt eine kleine grafische Oberfläche gemacht mit der man bequem die Quelle und das Ziel-Verz. aussuchen kann. Und den Status des Kopiervorgangs wollte ich in einem Textfenster "ausgabe" ausgeben lassen.
Code: Alles auswählen
def onStart(self):
von_verz = unicode(self.directorySource)
nach_verz = unicode(self.directoryTarget)
files = os.listdir(nach_verz)
for f in files:
datei = f.lower().replace(".tif", "")
try:
shutil.copy(von_verz+"/"+datei+".tfw", nach_verz)
self.ausgabe.setText("
"+"copy "+datei+".tfw"+self.ausgabe.toPlainText())
except:
self.ausgabe.setText("
"+"Fehler beim Kopieren! "+von_verz+"/"+datei+".tfw nach "+nach_verz+"/"+self.ausgabe.toPlainText())
else:
self.ausgabe.setText("<<< FERTIG! >>>"+self.ausgabe.toPlainText())
Wie bekomme ich das so hin, dass mein GUI-Fenster während des kopierens ordentlich, wie es z.b: in einer Konsole der Fall ist die kopierten Datensätze anzeigt und dabei nicht hängen bleibt? Also ich vermute die Lösung liegt in den Threads, aber dafür fehlt mir in Python (oder auch allgemein) die Übersicht.
Danke.