Python将循环作为文件作为生成器而不是str/di来编写

2024-05-16 04:18:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个初学者开发人员,我尝试在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'

Tags: 方法forsearchmyoualldccn
3条回答

把我的意见放在一起,你应该对下面的陈述很好。你知道吗

这将执行对文件的一次写入,该文件预先准备好所有输出(包括设置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

可以使用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))

尝试使用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')

如果键divdirb中不存在,则x的值将是“某个默认值”。你知道吗

相关问题 更多 >