temp. Dateien löschen...

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Hallo,

ich habe mir heute ein kleines Skript geschrieben, mit dem man temp. Dateien löschen kann. Was haltet ihr davon? Verbesserungen?

http://paste.pocoo.org/show/80749/

Vielen Dank!
(Kritik ist erwünscht)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

``size = size / 1024`` == ``size /= 1024``

Und so ``raw_inputs()`` sind blöd und funktionieren unzuverlässig. Schau in den Thread von mir in dem ich eine bessere Lösung vorstelle.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
lunar

Diese "raw_input()" am Schluss ist imho richtig unsinnig, und mit Sicherheit nicht der vorgesehene Weg, nur um das Eingabefenster offen zu halten.

Dein Exception-Handling ist ebenfalls unsinnig. So wie du es benutzt, fängst du weder wirklich alle Fehler ab (was der Sinn eines reinen excepts wäre) noch behandelst die abgefangenen Ausnahmen richtig. Entweder fängst du wirklich nur die Fehler von "os.remove" ab, dann aber bitte mit richtigem Ausnahmetyp (EnvironmentError) und mit richtiger Fehlermeldung (also auch die Error-Message loggen).

Oder du fängst wirklich alle Fehler ab, dann aber sollte das try-except-Statement die gesamte for-Schleife einschließen, und im "except" Block sollte "logging.exception" verwendet werden, um den Traceback zu loggen.

Btw, was hoffst du den mit diesem Skript zu löschen? ".tmp"-Dateien habe ich noch nie gesehen, die temporären Dateien liegen eigentlich in "tempfile.gettempdir()". Insofern wundert mich die Intention dieses Skripts.
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Danke!

Naja, es gibt ja unzählige tmp Dateien auf meinem Windows System...
Hab vorhin schon 44MB freigeräumt.

Ich habe das mit try except noch nie wirklich verstanden...

ich habe es jetzt mal etwas modifiziert:

Code: Alles auswählen

import os, sys, re

import logging
logging.basicConfig(
            level = logging.DEBUG,
            format = '%(asctime)s %(levelname)-8s %(message)s',
            datefmt = '%a, %d %b %Y %H:%M:%S',
            filename = 'log',
            filemode = 'w'
        )
        
regexp = re.compile('.*\.tmp', re.IGNORECASE)
size = 0

sys.stdout.write('temp. Dateien werden gesucht und geloescht...')

for root, dirs, files in os.walk('C:\\'):
    
    sys.stdout.write('.')
    
    for file in files:
    
        if regexp.match(file) != None:
        
            path = os.path.join(root, file)

            try:
                os.remove(path)
                file_size = os.path.getsize(path)
                logging.info('[%s Byte] %s wurde geloescht.' % (file_size, path))
                size += file_size
            except EnvironmentError:
                logging.error('%s konnte nicht geloescht werden.' % path)
    
    

size /= 1024
print '\nEs wurden %s KB freigeraeumt.' % size
logging.info('Es wurden %s KB Bytes freigeraeumt.' % size)
    
end = raw_input()

Leider finde ich aber deinen Beitrag zum raw_input() nicht...
lunar

Ich denke mal, die Fehlermeldung wäre auch ganz interessant, oder?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

SchneiderWeisse hat geschrieben:Leider finde ich aber deinen Beitrag zum raw_input() nicht...
Hier, aber wie Lunar sagte: das ist so oder so blödsinn, weil man Skripte nun mal in der Konsole startet und die nicht von selbst zugeht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

@Leonidas: Vielen Dank!
@Lunar: Wie kann man die Fehlermeldung dann in den Log bringen, finde in den Python Docs hierzu nichts...
lunar

SchneiderWeisse hat geschrieben:@Leonidas: Vielen Dank!
@Lunar: Wie kann man die Fehlermeldung dann in den Log bringen, finde in den Python Docs hierzu nichts...

Code: Alles auswählen

try:
    file_size = os.path.getsize(path)
    os.remove(path)
    logging.info('[%s Byte] %s wurde geloescht.' % (file_size, path))
    size += file_size
except EnvironmentError, err:
    logging.error('%s konnte nicht geloescht werden: %s' % (path, err))
Ich habe auch gleich mal dafür gesorgt, dass die Größe der Datei bestimmt wird bevor sie gelöscht wird, was die Zuverlässigkeit dieser Größenangabe unwesentlich verbessern dürfte ;)

Btw, wenn du am Anfang des Skripts noch ein "locale.setlocale('', locale.LC_ALL)" machst, erhältst du die Fehlermeldung auch in deutscher Sprache ;)
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Vielen Dank!

ja, das mit der Dateigröße ist selbstverständlich richtig... Habe nur beim schnellen zusammenpasten falsch eingeordnet....
Antworten