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

时间:2018-07-03 16:09:51

标签: python

我是一名初学者,我正在尝试在for循环中将以下变量写入文件,但是当它是生成器时,它试图以str的形式编写。尝试第二种方法时,我还会收到不受支持的操作数类型。

retVal

我也尝试了以下方法:

AngularFirestoreCollection<T>

它给出的错误是:

Observable

3 个答案:

答案 0 :(得分:2)

将我的评论全部放进去,下面的调整语句应该会很好。

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

答案 1 :(得分:2)

尝试使用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的值将为“某些默认值”。

答案 2 :(得分:1)

您可以使用text库将json对象写入文件。试试这个:

dict