Python 将数组转换为以逗号分隔的串联字符串的脚本

Python 将数组转换为以逗号分隔的串联字符串的脚本,python,Python,我正在尝试获取LDAP数据库中存储的所有电子邮件地址的列表,以逗号分隔 通过简化,我有: #/usr/bin/env python #编码:utf-8 #作者:张黄斌 #目的:为所有邮件用户添加enabledService=lib存储。 #Dovecot-2.0中IMAP文件夹共享所需。 #日期:2012-05-18 导入系统 导入ldap #注: #*绑定dn必须在LDAP服务器上具有写入权限。 乌里ldap://127.0.0.1:389' basedn='o=domains,dc=exam

我正在尝试获取LDAP数据库中存储的所有电子邮件地址的列表,以逗号分隔

通过简化,我有:

#/usr/bin/env python
#编码:utf-8
#作者:张黄斌
#目的:为所有邮件用户添加enabledService=lib存储。
#Dovecot-2.0中IMAP文件夹共享所需。
#日期:2012-05-18
导入系统
导入ldap
#注:
#*绑定dn必须在LDAP服务器上具有写入权限。
乌里ldap://127.0.0.1:389'
basedn='o=domains,dc=example,dc=com'
bind_dn='cn=Manager,dc=example,dc=com'
bind_pw='密码'
#初始化LDAP连接。
打印>>sys.stderr,“*连接到LDAP服务器:%s”%uri
conn=ldap.initialize(uri=uri,跟踪级别=0,)
连接绑定(绑定dn,绑定pw)
#获取所有邮件用户。
打印>>sys.stderr,“*获取所有邮件帐户…”
allUsers=conn.search\u(
basedn,
ldap.SCOPE_子树,
“(objectClass=mailUser)”,
['mail','enabledService'],
)
总计=len(诱惑者)
打印>>sys.stderr,“*总共%d个用户”。”%(总数)
#柜台。
计数=1
对于Alluser中的用户:
(dn,条目)=用户
mail=条目['mail'][0]
打印>>%s,%(邮件)
计数+=1
#解开连接。
康涅狄格州
当我运行此命令时,会出现以下错误:

  • 连接到LDAP服务器:ldap://127.0.0.1:389
  • 获取所有邮件帐户
  • 共有64个用户。回溯(最近一次调用last):文件“list\u mail\u users.py”,第43行,在 打印>>“%s,”%(邮件)AttributeError:'str'对象没有属性“write”
我在支持论坛上问了这个问题,他们建议我改用:ldapsearch?

这是你的问题

for user in allUsers:
  (dn, entry) = user
  mail = entry['mail'][0]

  print >> "%s, " % (mail)

  count += 1

您正在尝试打印到“%s”,这是一个字符串,仅打印可以接受具有写入属性的对象。我不太确定你想用它做什么,但我希望像
print>>sys.stdout,“%s,”(邮件)
或者
print>>文件“%s,”%mail

同样,我希望你可能想要“,”。加入(邮件)作为打印内容,而不是“%s,”
for user in allUsers:
  (dn, entry) = user
  mail = entry['mail'][0]

  print >> "%s, " % (mail)

  count += 1