2016-12-02 18 views
0

Есть ли способ определить значения хэша md5 только для каталогов в файловой системе?Хэш-значения каталогов

Я не хочу хэш-значение файлов. Мне нужны только значения для каталогов и подкаталогов.

ответ

0

Я думаю, что это не вопрос к питона но ОС:

>>> print(hashlib.md5(open('/home/tuls/dev', 'rb').read()).hexdigest()) 
... 
IsADirectoryError: [Errno 21] Is a directory: '/home/tuls/dev' 

и в консоли то же самое:

~$ md5sum /home/tuls/dev/ 
md5sum: /home/tuls/dev/: Is a directory 

Это потому, что каталог не содержит данные, только файлы, содержащие данные, , Смотри:

~$ du -hs Documents/ 
2,9G Documents/ 

~$ ls -lhd Documents/ 
drwxr-xr-x 5 tuls tuls 4,0K гру 2 11:21 Documents/ 

Существует 2,9G в каталоге, но вес директории 4,0K (только метаданные)

Ответ на ваш вопрос - md5 хэш не применяется для каталогов, только для файлов ,

+0

Есть ли способ вычислить значение хэша для каталогов/подкаталогов, но не файлов? –

0

Если вам действительно нужно рассчитать hash в каталоге - вы можете просто рассчитать хэш пути этого каталога. (Как уже упоминалось выше, каталог не может быть hashable объект файловой системы в конкретной ОС)

Например:

my_dir_path = 'C:\some\dir\name' 
my_dir_hash = hash(my_dir_path) 

Это решение является кросс-платформенным, быстрый и надежный.