я писал код в Python с использованием ldapsearch и наткнулся на эту ссылку в rosettacode.orgPython итерацию над структура данных кода объяснения
import ldap
l = ldap.initialize("ldap://ldap.example.com")
try:
l.protocol_version = ldap.VERSION3
l.set_option(ldap.OPT_REFERRALS, 0)
bind = l.simple_bind_s("[email protected]", "password")
base = "dc=example, dc=com"
criteria = "(&(objectClass=user)(sAMAccountName=username))"
attributes = ['displayName', 'company']
result = l.search_s(base, ldap.SCOPE_SUBTREE, criteria, attributes)
results = [entry for dn, entry in result if isinstance(entry, dict)]
print results
finally:
l.unbind()
Я не могу понять этот кусок кода здесь results = [entry for dn, entry in result if isinstance(entry, dict)]
- Я не вижу
dn
, определенный в приведенном выше коде, поэтому откуда он берется? - Что делает
isinstance(entry, dict)
?
Когда я пытаюсь выполнить это, я вижу, что это возвращает список всех записей ldap со связанными с ним соответствующими атрибутами. Начальный result
также возвращает список. Может кто-нибудь объяснить, что делает код results
?
Спасибо. Разрывная версия помогла это понять. – pkill