python md5 funktions problem

H

homecrow

Jungspund
Moin, ich hab ein komisches Problem und hoffe das mir hier Jemand sagen kann was genau da falsch läuft.
Stelle gerade ein script um das bis jetzt nur aus einer ekligen schleife bestanden hat so das alles in funktionen ausgelagert wird.
Allerdings klappt das was in der Schleife ohne Probleme, in der funktion nicht mehr.

Code:
#!/usr/bin/python2.7

import os
import sys
import hashlib


path = '/tmp'


def md5hash (path):
	filehash = open ( path, 'rb' )
	hash = hashlib.md5()
	while True:
		data = filehash.read(8192)
		if not data:
			return (path, "Is No Data File")
		hash.update( data )
	hexhash = hash.hexdigest()
	filehash.close()
	return hexhash


for oDirPaths, oDirNames, oFiles in os.walk( path, True, None ):
	 for filename in os.listdir(oDirPaths):
	 	if os.path.isfile( os.path.join ( oDirPaths, filename)):
			dirname = os.path.basename( oDirPaths )
                        fullpath = os.path.join ( oDirPaths, filename )
                        filehash = md5hash ( fullpath )
                        print filehash

Leider bekomme ich immer nur den return das es kein data file ist.
Wenn ich mir allerdings vor dem if not data:
ein print data mache dann bekomme ich binär als output also ist es doch data nur er meint das es kein data ist.
Kann mir Jemand sagen was hier falsch läuft?
 
Anders als die meisten Pyhon-Funktionen gibt read() keine Exception am Ende. Wenn du am Ende der Datei bist, gibt filehash.read(8192) eine leeren String zurück, welcher vom if als False genommen wird. Und dann returnst du "Is No Data File", obwohl du ja eigentlich weist, dass die Datei existiert. Das leere Wort hat übrigens auch einen md5-hash. Du könntest also gleich so etwas schreiben:

Code:
def md5hash (path):
	filehash = open ( path, 'rb' )
	hash = hashlib.md5()
	while True:
		data = filehash.read(8192)
		if not data:
			filehash.close()
			return hash.hexdigest()
		hash.update( data )
 

Ähnliche Themen

Nginx als Reverse Proxy für Nextcloud und Emby

wxPython Problem

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

NagiosGrapher 1.7.1 funktioniert nicht

Windows clients können nicht mehr auf lange laufendes System zugreifen

Zurück
Oben