В Python, если вы хотите вычислить некоторый хеш (MD5, SHA1), есть модуль hashlib
.Для выполнения некоторых операций над файловой системой существует модуль os
.В этих модулях вы найдете: sha1
объект с hexdigest()
методом и listdir()
и rename()
функциями.Пример кода:
import os
import hashlib
def sha1_file(fn):
f = open(fn, 'rb')
r = hashlib.sha1(f.read()).hexdigest()
f.close()
return r
for fn in os.listdir('.'):
if fn.endswith('.sha'):
hexh = sha1_file(fn)
print('%s -> %s' % (fn, hexh))
os.rename(fn, hexh)
Внимание : sha1_file()
Функция читает весь файл сразу, поэтому он не будет работать очень хорошо для больших файлов.В качестве домашнего задания попробуйте улучшить его для таких файлов (прочитать файл по частям и обновить хеш с этими частями).
Конечно, if fn.endswith('.sha'):
используется только для целей тестирования.