我是一个初学者开发人员,我正在尝试将以下变量在 for 循环中写入文件,但它试图在生成器时作为 str 写入。 尝试使用第二种方法时,我也会收到不受支持的操作数类型。
divdir = conn.extend.standard.paged_search('cn = All.DL Div DSS Directors, ou = Distribution Lists, ou = Exchange, dc=google,dc=corpad,dc=net', '(objectClass=*)', attributes=['member'])
for b in divdir:
with open ('test2.txt', 'w') as file:
file.write (b)
我还尝试了以下方法:
divdir = conn.extend.standard.paged_search('cn = All.DL Div DSS Directors, ou = Distribution Lists, ou = Exchange, dc=google,dc=corpad,dc=net', '(objectClass=*)', attributes=['member'])
my_file=open("test2.txt","w")
for b in divdir:
my_file.write(b.get('divdir')+'n')
my_file.close()
它给出的错误是:
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
把我的评论放在一起,你应该对以下调整后的陈述感到满意。
这将对文件执行单次写入,该文件会预先准备所有输出(包括设置generator=False
(,并通过连接所有值一次写入所有输出:
divdir = conn.extend.standard.paged_search('cn = All.DL Div DSS Directors, ou = Distribution Lists, ou = Exchange, dc=google,dc=corpad,dc=net', '(objectClass=*)', attributes=['member'], generator=False)
directors = map(str, divdir) #Stringify each director from generator
directors_str = 'n'.join(directors) #Join the list of directors with a newline
with open('test2.txt', 'w') as file:
file.write(directors_str) #Write to file
尝试使用str()
将字典转换为字符串。应该看起来像这样:
for b in divdir:
with open ('test2.txt', 'w') as file:
file.write (str(b))
对于该TypeError
,当您调用b.get('divdir')
时,结果为None
。 您可能需要仔细检查是否使用了正确的键名,或者如果字典不包含该键,则可以提供要使用的默认值。
x = b.get('divdir', 'some default value')
如果b
中不存在键divdir
,则x
的值将为"某个默认值"。
您可以使用json
库将dict
对象写入文件。 试试这个:
import json
# divdir = conn.extend.standard.paged_search('cn = All.DL Div DSS Directors, ou = Distribution Lists, ou = Exchange, dc=google,dc=corpad,dc=net', '(objectClass=*)', attributes=['member'])
divdir={'raw_dn': b'CN=All.DL Div Controllers - National Group,OU=Distribution Lists,OU=Exchange,DC=google,DC=corpad,DC=net', 'dn': 'CN=All.DL Div Controllers - National Group,OU=Distribution Lists,OU=Exchange,DC=google,DC=corpad,DC=net', 'raw_attributes': {'member': [b'CN=gji9847,OU=U02562,OU=02562,DC=google,DC=corpad,DC=net', b'CN=exx8092,OU=U06032,OU=06032,DC=google,DC=corpad,DC=net', b'CN=EWR8386,OU=U09373,OU=09373,DC=google,DC=corpad,DC=net', b'CN=HXU9279,OU=U00704,OU=00704,DC=google,DC=corpad,DC=net', b'CN=KVG6693,OU=U25692,OU=25692,DC=google,DC=corpad,DC=net', b'CN=JCL6495,OU=U01246,OU=01246,DC=google,DC=corpad,DC=net', b'CN=RNE9520,OU=U01673,OU=01673,DC=google,DC=corpad,DC=net', b'CN=PCN5400,OU=U01673,OU=01673,DC=google,DC=corpad,DC=net', b'CN=WPM9271,OU=U01673,OU=01673,DC=google,DC=corpad,DC=net', b'CN=JKJ2421,OU=U01692,OU=01692,DC=google,DC=corpad,DC=net']}, 'attributes': {'member': ['CN=gji9847,OU=U02562,OU=02562,DC=google,DC=corpad,DC=net', 'CN=exx8092,OU=U06032,OU=06032,DC=google,DC=corpad,DC=net', 'CN=EWR8386,OU=U09373,OU=09373,DC=google,DC=corpad,DC=net', 'CN=HXU9279,OU=U00704,OU=00704,DC=google,DC=corpad,DC=net', 'CN=KVG6693,OU=U25692,OU=25692,DC=google,DC=corpad,DC=net', 'CN=JCL6495,OU=U01246,OU=01246,DC=google,DC=corpad,DC=net', 'CN=RNE9520,OU=U01673,OU=01673,DC=google,DC=corpad,DC=net', 'CN=PCN5400,OU=U01673,OU=01673,DC=google,DC=corpad,DC=net', 'CN=WPM9271,OU=U01673,OU=01673,DC=google,DC=corpad,DC=net', 'CN=JKJ2421,OU=U01692,OU=01692,DC=google,DC=corpad,DC=net']}, 'type': 'searchResEntry'}
with open('test2.txt', 'w') as file:
file.write(json.dumps(divdir))