Один из способов получить все каталоги и файлы, которые не могут быть прочитаны, действительно использовать os.walk
для рекурсивного обхода дерева каталогов, а затем, для каждого каталога и файла, проверять разрешения с помощью os.access
import os
unreadable_dirs = []
unreadable_files = []
for dirpath, dirnames, filenames in os.walk('/var/log'):
for dirname in dirnames:
dirname = os.path.join(dirpath, dirname)
if not os.access(dirname, os.R_OK):
unreadable_dirs.append(dirname)
for filename in filenames:
filename = os.path.join(dirpath, filename)
if not os.access(filename, os.R_OK):
unreadable_files.append(filename)
print 'Unreadable directories:\n{0}'.format('\n'.join(unreadable_dirs))
print 'Unreadable files:\n{0}'.format('\n'.join(unreadable_files))
Примечание. Вы можете написать свою собственную рекурсивную функцию, которая пересекает структуру каталогов, но в основном вы будете дублировать функциональность os.walk
, поэтому я не вижу варианта использования для glob.glob
.