~chris.foo/lolram/master

« back to all changes in this revision

Viewing changes to calc_hash.py

  • Committer: Christopher Foo
  • Date: 2012-09-16 17:00:41 UTC
  • Revision ID: git-v1:51d973cdbe10c50641d37d7714f813d80136398c
Clean up unused files.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/env python3
2
 
 
3
 
import argparse
4
 
import os
5
 
import os.path
6
 
import hashlib
7
 
 
8
 
def main():
9
 
        arg_parser = argparse.ArgumentParser()
10
 
        arg_parser.add_argument('target_dir', type=str,
11
 
                metavar='TARGET_DIR', nargs='+')
12
 
        
13
 
        args = arg_parser.parse_args()
14
 
        hash_obj = hashlib.md5()
15
 
        
16
 
        for directory in args.target_dir:
17
 
                for path in sorted(get_paths(directory)):
18
 
                        hash_obj.update(path.encode('utf8'))
19
 
                
20
 
                        with open(path, 'rb') as f:
21
 
                                data = f.read(4096)
22
 
                        
23
 
                                if data == b'':
24
 
                                        break
25
 
                        
26
 
                                hash_obj.update(data)
27
 
                
28
 
        print(hash_obj.hexdigest())
29
 
 
30
 
def get_paths(directory):
31
 
        for dirpath, dirnames, filenames in os.walk(directory):
32
 
                for dirname in list(dirnames):
33
 
                        if dirname.startswith('.'):
34
 
                                dirnames.remove(dirname)
35
 
                                continue
36
 
                        
37
 
                for filename in filenames:
38
 
                        if not filename.startswith('.') and not filename.endswith('~'):
39
 
                                yield os.path.join(dirpath, filename)
40
 
 
41
 
if __name__ == '__main__':
42
 
        main()