如何编写多次调用函数的输出文件?

How to write an output file of multiple time called functions?

我试图从连续调用的函数的值 return 中写入一个输出文件,但我做不到,而是收到如下错误:

    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

提前致谢

尝试这样的事情:

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

您需要 return,而不是打印您的输出以将其添加到列表中,然后将每个列表条目连接成一个字符串以供写入。

我根据你的版本所做的更改:

  • 我 return "hello" 而不是打印它
  • 我不会 运行 do() 马上,因为你不需要。
  • 我先组合元素再写
  • 我完成后关闭文件

我认为这是你的意图:

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() 需要 return 一个值在 map
  • 中累积
  • 您需要以某种方式迭代 map 结果

另一方面,使用 map 有点矫枉过正……但在更大的上下文中它可能有意义。

for x in range(10):
    adele.write(do())