SHA-Checksumme
Verfasst: Donnerstag 16. August 2007, 18:52
Hier das aktuelle Skript: vielleicht nützt es ja noch jemand Anderem.
EDIT: by Damaskus
Script getrennt und in Codesnippets kopiert
Original Thread http://www.python-forum.de/topic-11650.html
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# ----- Lizenz: GPL Version 3 -----
# ----- Skriptversion: 1.2 -----
# ----- Modulimporte: -----
import os
import sha
import time
# ----- Funktionsdefinitionen: -----
# blocksize = 1024 * 1024
def shasum(filepath, blocksize = 2048 * 2048):
'''Gibt die SHA-Checksumme (Hex-Digest) der angegebenen Datei zurück.
filepath: Pfad zu einer Datei; blocksize: Größe des Datenblocks, der
auf einmal bearbeitet werden soll.'''
h = sha.new()
f = open(os.path.normcase(filepath), "rb")
# normcase() vereinheitlicht die Pfade, unter Unix bleibt alles gleich,
# unter windows wird alles kleingeschrieben und Slashes(/) in
# Backshlashes(\) gewandelt.
try:
while True:
part = f.read(blocksize)
if not part:
break
h.update(part)
finally:
f.close()
return h.hexdigest()
def del_file(name):
'''Löscht die als Argument übergebene Datei.'''
if os.path.exists(name):
os.remove(name)
print name, ' gelöscht.'
print
def datums_zeit_kette():
'''Gibt die Datums und Zeit Zeichenkette, die an den Dateianfang
und das Dateiende der Inhaltsdatei geschrieben wird, zurück.'''
jahr = time.strftime('%Y')
monat = time.strftime('%m')
tag = time.strftime('%d')
stunde = time.strftime('%H')
minute = time.strftime('%M')
sekunde = time.strftime('%S')
return 'am %s.%s.%s um %s Uhr %s und %s Sekunden.\n' \
% (tag, monat, jahr, stunde, minute, sekunde)
# Skriptbeginn
print
# Ermitteln des aktuellen Arbeitsverzeichnisses
# cwd = ('c'urrent 'w'orking 'd'ir)
cwd = os.getcwd()
print 'aktuelles Arbeitsverzeichniss: %s' % cwd
print
index_datei = os.path.normcase(os.path.join(cwd, 'Inhaltsliste_1.x.txt'))
# join() verknüpft Pfade inteligent.
# alte Inhaltsdatei löschen
del_file(index_datei)
# neue Inhaltsdatei anlegen
f = open(index_datei, 'w')
start = 'Start ' + datums_zeit_kette() + '\n'
f.write(start)
f.write('Startverzeichniss: ' + cwd + '\n')
# os.walk() durchläuft alle Verzeichnisse unterhalb von 'cwd' und liefert in
# jedem Ordner 'root'=aktuelles Verzeichnis, 'ordner'=Liste aller Ordner im
# aktuellen Verzeichnis und 'dateien'=Liste aller Dateien im Verzeichniss
for root, ordner, dateien in os.walk(cwd):
# aktuelles Verzeichniss in die Datei schreiben
f.write('\n Verzeichniss: ' + root + '\n')
ordner.sort(reverse = False) # aufsteigend sortieren
dateien.sort(reverse = False)
for datei in dateien:
# Für jede Datei im aktuellen Verzeichnis die SHA-Summe berechnen
sha_summe = shasum(os.path.join(root, datei))
# Die berechnente SHA-Summe mit dem zugehörigen Dateinamen in die
# Datei schreiben
f.write(' SHA-Summe: ' + sha_summe + ' Datei: ' + datei + '\n')
for verzeichnis in ordner:
# Jeden Ordner im aktuellen Verzeichnis in die Datei schreiben
f.write(' Unterordner: ' + verzeichnis + '\n')
#
ende = '\nEnde ' + datums_zeit_kette()
f.write(ende)
f.close()
print 'Neue ', index_datei, 'geschrieben.'
# Skriptende
EDIT: by Damaskus
Script getrennt und in Codesnippets kopiert
Original Thread http://www.python-forum.de/topic-11650.html