Skip to main content
 首页 » 编程设计

Python之将 For Loop 编写为文件作为生成器而不是 str/dict

2025年05月04日22yyy_WW

我是一名初级开发人员,我正在尝试将 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