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)
temp. Dateien löschen...
-
- 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.
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
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.
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.
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:
Leider finde ich aber deinen Beitrag zum raw_input() nicht...
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...
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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.SchneiderWeisse hat geschrieben:Leider finde ich aber deinen Beitrag zum raw_input() nicht...
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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))
Btw, wenn du am Anfang des Skripts noch ein "locale.setlocale('', locale.LC_ALL)" machst, erhältst du die Fehlermeldung auch in deutscher Sprache