一个办法让所有的目录,并且无法读取确实使用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
的用例。
你认为什么样的权限被忽略(读,写,执行)?你只需要检查给定的目录名是否存在? – jcollado 2012-01-12 09:18:59
我为这个问题增加了一个例子。 – guettli 2012-01-12 09:35:23