os.path.isdir() не распознает скрытые каталоги

Итак, я заметил, что при запуске os.path.isdir() в подкаталогах моего корневого каталога он возвращает False для любых скрытых/защищенных папок. Есть ли какая-то причина для этого, или это известная ошибка? Если нет, то есть ли способ исправить это?

Для справки ниже приведен код, который я запускаю:

import os
for path in os.listdir("/"):
    print path, os.path.isdir(path)

РЕДАКТИРОВАТЬ: это вывод для приведенного выше кода

.DocumentRevisions-V100 False
.file False
.fseventsd False
.Spotlight-V100 False
.Trashes False
.vol False
Applications True
bin False
cores False
dev False
Developer False
etc False
home False
installer.failurerequests False
Library True
net False
Network False
opt False
private False
sbin False
System False
tmp False
User Information False
Users False
usr False
var False
Volumes False

person Creed    schedule 05.05.2016    source источник
comment
Работает ли это для нескрытых каталогов? Может быть, вы опубликуете пример вывода?   -  person David Z    schedule 05.05.2016
comment
поэтому я поместил вывод выше, вывод идентичен, если я использую os.path.isdir(os.path.realpath(path)), который должен удалить все символические каталоги, и, как вы можете видеть, он работает для некоторых нескрытых каталогов, таких как library и applications , однако есть и нескрытые папки, для которых он также возвращает false (включая, например, users)   -  person Creed    schedule 05.05.2016


Ответы (1)


Попробуйте добавить имя каталога в начало файла path.

import os
for path in os.listdir("/"):
    print path, os.path.isdir("/" + path)
person cdarke    schedule 05.05.2016
comment
это исправлено, спасибо! - person Creed; 05.05.2016
comment
извините, как ни странно, не работало при использовании os.isdir("/"+os.path.realpath(path)) - person Creed; 05.05.2016
comment
так что похоже, что причина того, что os.path.realpath и os.path.abspath не работают, заключается в том, что они неправильно добавляют /users/<username>/ в каждый каталог - person Creed; 05.05.2016