rekursives löschen mit Abfrage

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
feldmaus
User
Beiträge: 284
Registriert: Donnerstag 12. Oktober 2006, 16:48

rekursives löschen mit Abfrage

Beitragvon feldmaus » Mittwoch 12. März 2008, 19:55

Hallo Alle,

wollte mal mein selbst modifiziertes Skript veröffentlichen,

Es müßte sowohl unter Linux als auch Windows laufen.

Das Skript sucht nach *.pyc Dateien rekursiv ab dem angegebenen
Verzeichnis und fragt ob sie gelöscht werden,

Code: Alles auswählen

#!/usr/bin/env python2.5
#
#loeschenPyc.pyw
#
from sys import *
from os import *
from os.path import *
from re import *

class suchRobot(object):
    def __init__(self,  wurzel):
        self.wurzel = wurzel
        self.endung = compile('\w*\.pyc\Z')
   
    def suche(self, arg, verzeichnis, dateien):
        #Suche nach Dateien die das Suchwort enthalten
        chdir(verzeichnis)
        for datei in dateien:
            if isfile(datei):
                if self.endung.match(datei):
                    print "Soll ", datei," geloescht werden?(j) "
                    antwort = stdin.readline()
                    if antwort == 'j\n':
                        try:
                            remove(datei)
                            print "Datei ",  datei, " geloescht!!!"
                        except:
                            print "Konnte Datei ",datei, "nicht loeschen."
                    else:
                        print "Datei ",  datei, " wurde nicht geloescht!"
   
    def durchsuche(self):
        walk(self.wurzel,  self.suche,  None)
   
workDir = getcwd()
bot = suchRobot(workDir)
bot.durchsuche()


Ich hatte mir Ideen aus meinem Buch genommen und den Rest gut umgeändert.

Grüße Markus
feldmaus
User
Beiträge: 284
Registriert: Donnerstag 12. Oktober 2006, 16:48

Beitragvon feldmaus » Mittwoch 12. März 2008, 19:59

Ich habe bemerkt es dürfen keine Leerzeichen im Dateinamen enthalten sein.
EyDu
User
Beiträge: 4866
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Mittwoch 12. März 2008, 20:16

Na du willst doch bestimmt auch kritik:

- Lass diese *-importe
- Warum verwendest du eine Klasse, wenn eine einfache Funktion es genau so tut?
- Ein "except", welches die abzufangenden Exceptions nicht einschränkt ist eine schlechte Idee.
- Wird eine Datei nach "for datei..." und vor "if isfile..." gelöscht (oder sonst wie blockiert), werden von dir keine Fehler abgefangen.
- Der Vollständigkeit halber: Die vermischung von Logik und Ausgabe finde ich bei so einem einfachen Script noch nicht so gravierend.
- Eine Meldung, dass eine Datei nicht gelöscht wurde wenn man "n" eingibt ist etwas überflüssig.
feldmaus
User
Beiträge: 284
Registriert: Donnerstag 12. Oktober 2006, 16:48

Beitragvon feldmaus » Mittwoch 12. März 2008, 20:31

EyDu hat geschrieben:- Ein "except", welches die abzufangenden Exceptions nicht einschränkt ist eine schlechte Idee.

Welche Exceptions könnte bei remove() auftreten?
meneliel
User
Beiträge: 256
Registriert: Montag 25. Juni 2007, 08:35
Kontaktdaten:

Beitragvon meneliel » Mittwoch 12. März 2008, 21:12

feldmann_markus hat geschrieben:
EyDu hat geschrieben:- Ein "except", welches die abzufangenden Exceptions nicht einschränkt ist eine schlechte Idee.

Welche Exceptions könnte bei remove() auftreten?


... probieren ... so mach ich das immer ... wenn ich wisen will welche exception auftreten kann, tu ich alles, damit eine auftritt...
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 12. März 2008, 21:47

Hmm, also ich schreib mir für sowas immer kleine Shell-Einzeiler mit ``find``. Fürs Lernen - warum nicht.

[code=]find . -name '*.pyc' -exec rm -i {} \;[/code]
My god, it's full of CARs! | Leonidasvoice vs Modvoice
EyDu
User
Beiträge: 4866
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Mittwoch 12. März 2008, 23:43

feldmann_markus hat geschrieben:Welche Exceptions könnte bei remove() auftreten?

Schon mal in die Dokumentation geschaut?

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder