im unten stehenden Quelltext lese ich eine *.Zip-Datei aus. Mittels der namelist()-Methode lasse ich mir in der For-Schleife alle Dateien aus dem aktuellen Archiv ermitteln. Anschließend werden die einzelnen Dateien in der For-Schleife mit dem With-Statement geöffnet, und vom Inhalt der
jeweiligen Datei einen SHA521-Wert erzeugt, und anshcließend wird dieser Hash-Wert einer zuvor erstellte leere Liste hinzufügt. Sobald die For-Schleife ihre Arbeit getan hat, wird die Liste an die hash_all-Funktion übergeben. Und nun stecke ich gedanklich fest. Ich habe ja nun eine ganze Reihe von Hash-Werten in der Liste. Und aus all diesen Hash-Werten möchte ich am Ende sozusagen einen Hash-Wert bekommen. Denn auf diesem Weg möchte ich dann ein Archiv "absichern". Zumindest war das meine Idee.
Code: Alles auswählen
# Import zipfile library
import zipfile
# Import hashlib library (md5 method is part of it)
import hashlib
def hash_all(prompt):
print "my prompt", prompt
def hash_file_content(file_name):
# Create a empty list for all hashes
list_hashes = []
file_path = zipfile.ZipFile(file_name, "r")
for name in file_path.namelist():
#print "All files are: ",name
try:
# Open,close, read file and calculate SHA512 on its contents
# Notice: Its should also open the file in binary mode (ex. rb),
# otherwise it might gets problems
with open(name,'rb') as file_to_check:
data = file_to_check.read()
# pipe contents of the file through
sha_512_returned = hashlib.sha512(data).hexdigest()
print "Hashed (", sha_512_returned ,") from content of file", name
list_hashes.append(sha_512_returned)
except Exception:
#print "Exception", Exception
pass
#print "list_hashes", list_hashes
hash_all(list_hashes)
if __name__ == "__main__":
zip_file_name = raw_input("Enter path completly: ")
hash_file_content(zip_file_name)