我试图从连续调用的函数返回的值中写出一个输出文件,但是我无法做到,而是收到如下错误:
MA.write(l)
TypeError: expected a character buffer object
我的剧本:
def do():
print "Hello"
if __name__ == "__main__":
do()
MA=open("hi.txt","w")
l=map(lambda x: do(), range(10))
MA.write(l)
可能是它的基础,但有人可以给出建议真的很有帮助。
预期输出:
hi.txt
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
提前感谢你
答案 0 :(得分:2)
我认为这是你的意图:
def do():
return "Hello"
if __name__ == "__main__":
with open("hi.txt", "w") as adele:
hellos = map(lambda x: do(), range(10))
for hello in hellos:
adele.write(hello)
do()
需要返回一个值以在map
map
结果另一方面,使用map
是过度杀伤......但也许在你的大背景下有意义。
for x in range(10):
adele.write(do())
答案 1 :(得分:1)
尝试这样的事情:
def do():
return "Hello"
if __name__ == "__main__":
MA=open("hi.txt","w") # Prepare hi.txt
l=map(lambda x: do(), range(10)) # Adds Hello to the list 10 times
MA.write('\n'.join(l)) # Combines them together with a newline between each entry
MA.close() # Finished with hi.txt, this line is important
您需要返回,而不是打印输出以将其添加到列表中,然后将每个列表条目连接到一个要写入的字符串中。
我对您的版本所做的更改: