Welcome, guest | Sign In | My Account | Store | Cart
# http://akiscode.com/articles/sha-1directoryhash.shtml
# Copyright (c) 2009 Stephen Akiki
# MIT License (Means you can do whatever you want with this)
#  See http://www.opensource.org/licenses/mit-license.php
# Error Codes:
#   -1 -> Directory does not exist
#   -2 -> General error (see stack traceback)

def GetHashofDirs(directory, verbose=0):
 
import hashlib, os
 
SHAhash = hashlib.sha1()
 
if not os.path.exists (directory):
   
return -1
   
 
try:
   
for root, dirs, files in os.walk(directory):
     
for names in files:
       
if verbose == 1:
         
print 'Hashing', names
        filepath
= os.path.join(root,names)
       
try:
          f1
= open(filepath, 'rb')
       
except:
         
# You can't open the file for some reason
          f1
.close()
         
continue

       
while 1:
         
# Read file in as little chunks
          buf
= f1.read(4096)
         
if not buf : break
         
SHAhash.update(hashlib.sha1(buf).hexdigest())
        f1
.close()

 
except:
   
import traceback
   
# Print the stack traceback
    traceback
.print_exc()
   
return -2

 
return SHAhash.hexdigest()

print GetHashofDirs('My Documents', 1)

History

  • revision 4 (14 years ago)
  • previous revisions are not available