代码之家  ›  专栏  ›  技术社区  ›  DaeYoung

在python中,从连接对象的entries属性中提取的单个元素代表什么数据类型?

  •  -1
  • DaeYoung  · 技术社区  · 6 年前

    我对蟒蛇一点也不精通。我被要求查看其他人使用的python脚本 search ldap entries . 顺便说一句,由于某种原因,我无法联系到最初的开发人员,在部署它之前,需要对它进行+测试的可视化代码检查。考虑到这些限制,请允许我继续。

    import ldap3
    from ldap3 import Server,Connection, ALL
    
    conn = Connection(....)
    conn.search(....)
    for entry in conn.entries:
        if (len(entry['cn']) > 0):
            ....
            name = entry['name']
            if name:
               user_name = str(name)
            else:
               user_name = "Bob"
    

    第一个问题是 len(entry['cn']) > 0 我喜欢将其解释为检查LDAP返回的cn值的字符长度,例如 cn=bob,ou=people,ou=foocomany . 我很确定 entry['cn'] 不是字符串类型,但我不知道它代表什么数据类型。你能告诉我它是什么类型的吗?

    我的第2+3个问题与最初的问题没有直接关系,但是请允许我优雅地提出这些问题。

    我的第二个问题是,如果这个假设是正确的, 进入[ CN ] 应转换为类似字符串类型 str(entry['cn']) . 然后检查它的长度?

    我的第三个问题开始了 if 短期我喜欢把它解释为 if name is not null if name is not None 以蟒蛇的方式。我解释得对吗?如果是的话,我应该把它换成 if not (name is None) 会起作用吗?我在谷歌上搜索了一下,想得到那个stmt。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Kal Zekdor    6 年前

    给定所提供的上下文和代码,此代码段似乎正在使用 ldap3 图书馆。

    从相关的 documentation , conn.entries 应该是一个列表 Entry 物体。

    这意味着 entry['cn'] 应该返回一个 Attribute . 做了一点源代码潜水,这似乎只是一个具有可写标志的奇特列表。 len(entry['cn']) > 0 结束呼叫 this method ,它只返回属性具有的值的数目。它大于0,只是确保cn实际上是设置的。