如何编写多次调用函数的输出文件?
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())
我试图从连续调用的函数的值 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())