Einfach „sha“ durch „hashlib.sha1“ ersetzen, das funktioniert dann auch mit Python 3. Außerdem importierst du das Modul „filecmp“, obwohl du es nicht verwendest.Dokumentation zum Modul „sha“ hat geschrieben: Deprecated since version 2.5: Use the hashlib module instead.
Lister - Programmidee
-
- User
- Beiträge: 318
- Registriert: Dienstag 26. Februar 2013, 18:39
Aber allgemein ist der Code besser als vorher? (Warum gibt es kein Wein-Smiley?) Ich werde mir das Modul mal ansehen
Natürlich ist es Raten, wenn man nicht die möglichen Fehler in der Dokumentation nachschaut:Gary123456 hat geschrieben:Ist nicht raten. Wenn die die .py nicht zugreifen kann, kommt ne exception, dass es keine Berechtigungen hat.cofi hat geschrieben:Das ist doch genauso raten ...Gary123456 hat geschrieben:Es könnte dann aber sein, dass dieses getsize nicht genügen Berechtigungen hat.
http://docs.python.org/2.7/library/os.path.html#os.path.getsize hat geschrieben:os.path.getsize(path)
Return the size, in bytes, of path. Raise os.error if the file does not exist or is inaccessible.
Das Leben ist wie ein Tennisball.
Ich finde den Code schon besser. Würde die Definition von „verzeichnisse“ wohl direkt unter „main“ schreiben, außerdem stimmt die Dateigröße, die du angibst, nicht. „os.path.getsize“ liefert die Größe in Bytes, und 1024 Bytes sind 1 KiB. (1024 KiB sind übrigens 1 MiB. →Wikipedia)
-
- User
- Beiträge: 318
- Registriert: Dienstag 26. Februar 2013, 18:39
Ich denke, dass ich weitgehenst fertig bin:
Du meinst also als Kommentar die Definition?
Code: Alles auswählen
import os, sha
def shasum(filepath, blocksize = 1024 * 1024):
h = sha.new()
with open(filepath, "rb") as f:
while True:
part = f.read(blocksize)
if not part:
break
h.update(part)
return h.hexdigest()
def main():
#Verzeichnisse = Unter diesen Verzeichnisse sollen Dateien gelistet werden
with open("Testdatei.txt", "w") as textdatei:
verzeichnisse = ["C:\\", "C:\\Users"]
for verzeichnis in verzeichnisse:
for datei in os.listdir(verzeichnis):
pfad = os.path.join(verzeichnis, datei)
try:
if os.path.isfile(pfad):
textdatei.write("FI {} Größe: {} MB SHA: {} \n".format(pfad, (os.path.getsize(pfad)/1024)/1024.0, shasum(pfad)))
elif os.path.isdir(pfad):
textdatei.write("OR {} \n".format(pfad))
except IOError:
continue
if __name__ == "__main__":
main()
Würde die Definition von „verzeichnisse“ wohl direkt unter „main“ schreiben,
Du meinst also als Kommentar die Definition?