Datei löschen und Fokus auf Python behalten

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.
Antworten
MightyM
User
Beiträge: 11
Registriert: Samstag 10. März 2012, 19:06

Hey all,

Mein Problem:
Mein Programm bietet die funktion dateien zu löschen (das ist nicht die Hauptfunktion :lol:), jedoch kenn ich dafür nur den Befehl "os.system()" welcher ja einfach alles was in die Klammer geschrieben wird in der Kommandozeile ausführt. Das Funktioniert auch alles super nur nachdem sich die Kommandozeile kurz geöffnet und wieder geschlossen hat, ist das Python Programm im Hintergrund und man muss es wieder hervorholen. Das finde ich nicht sehr Benutzerfreundlich, deshalb: Kennt jemand eine Lösung, vlt. einen anderen Befehl?

Code:

Code: Alles auswählen

from os import system, chdir

chdir(self.WorkPath)
system("del FILENAME")
Gruss und danke im Voraus
Mike
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Du hast du kennst du bereits das os-Modul, dort gibt es auch eine Funtkion zum Löschen von Dateien. Dann musst du dich nicht mit so uneleganten und systemspezifischen Dingen wie ``system`` quälen. Außerdem ist, das ändern des Arbeitsverzeichnis mittels ``chdir`` keine besonders gute Idee, da du damit am globalen Status der Anwendung herumwerkelst. Setze lieber die Pfade mittels ``os.path.join`` zusammen.

Sebastian
Das Leben ist wie ein Tennisball.
MightyM
User
Beiträge: 11
Registriert: Samstag 10. März 2012, 19:06

Okay die Funktion habe ich gefunden, was mir grundsätzlich das chdir erspart.

Was du aber mit deinem zweiten Satz meinst nimmt mich trotzdem wunder, 'os.path.join' verbindet ja nur 2 Pfade (wenn ich das richtig verstanden habe), was hat das denn mit dem aktuellen Arbeitsverzeichnis zu tun?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Du wechselst bei deinem Code das Arbeitsverzeichnis um dann die Datei zu löschen. Den Aufruf soltlest du dir sparen, indem du den Pfad der zu löschenden Datei zusammensetzt:

Code: Alles auswählen

os.remove(os.path.join(workingdirectory, filename))
.
Das Leben ist wie ein Tennisball.
MightyM
User
Beiträge: 11
Registriert: Samstag 10. März 2012, 19:06

Achso, wusste nicht das du dich schon auf die remove Funktion beziehst, das ist natürlich klar. Aber das chdir war vorher für die Funktion os.system() bzw. die Kommandozeile nötig.

Bisher hab ich meine Pfade jedoch so zusammengesetzt:

Code: Alles auswählen

os.remove("%s\\%s" %(workpath,filename)
sollte eigendlich kein Unterschied machen nehm ich jetzt mal an? :K
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Doch, das macht einen Unterschied. Mittels os.path.join ist man zum Beispiel vom Betriebssystem unabhängig
Das Leben ist wie ein Tennisball.
MightyM
User
Beiträge: 11
Registriert: Samstag 10. März 2012, 19:06

auch wenn z.B. unter der Variable workpath der Pfad 'C:\\Beispielordner1\\Beispielorder2' gespeichert ist?
deets

@MightyM

Nein, natuerlich nicht. Aber der Code den du schreibst ist zumindest unabhaengig. Darum sollte man sich das gleich angewoehnen.
Antworten