Python globで "Permission denied"エラーは無視されます。残念ながら私は読むことができないディレクトリがあるかどうかを知る必要があります。globですが、 "permission denied"を無視しません。
私はos.walk()とfnmatchを使うことができましたが、もっと良い解決策がありますか?
例:
[email protected]:~
===> python
>>> import glob
>>> glob.glob('/root/*')
[]
そこに/ルートファイルがありますが、PC @ユーザーはこのディレクトリを読み取ることが許可されていません。
単一の例外では不十分です。たとえば、glob.glob('/var/log/*/*.log')
です。どのディレクトリが存在するのかを知りたいが、読めない。
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))
注:読み取ることができないすべてのディレクトリとファイルを取得する
どのような種類のパーミッションは無視されていると思いますか(読み込み、書き込み、実行)?指定されたディレクトリ名が存在するかどうかを確認するだけですか? – jcollado
質問に例を追加しました。 – guettli