Seite 6 von 6

Re: Lister - Programmidee

Verfasst: Montag 29. April 2013, 15:38
von nomnom
Dokumentation zum Modul „sha“ hat geschrieben: Deprecated since version 2.5: Use the hashlib module instead.
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.

Re: Lister - Programmidee

Verfasst: Montag 29. April 2013, 15:41
von Gary123456
Aber allgemein ist der Code besser als vorher? (Warum gibt es kein Wein-Smiley?) Ich werde mir das Modul mal ansehen ;)

Re: Lister - Programmidee

Verfasst: Montag 29. April 2013, 15:47
von EyDu
Gary123456 hat geschrieben:
cofi hat geschrieben:
Gary123456 hat geschrieben:Es könnte dann aber sein, dass dieses getsize nicht genügen Berechtigungen hat.
Das ist doch genauso raten ...
Ist nicht raten. Wenn die die .py nicht zugreifen kann, kommt ne exception, dass es keine Berechtigungen hat.
Natürlich ist es Raten, wenn man nicht die möglichen Fehler in der Dokumentation nachschaut:
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.

Re: Lister - Programmidee

Verfasst: Montag 29. April 2013, 15:48
von nomnom
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)

Re: Lister - Programmidee

Verfasst: Montag 29. April 2013, 15:59
von Gary123456
Ich denke, dass ich weitgehenst fertig bin:

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?