使用save_ouput函数,如何保存每个函数的输出?
def a():
print("abc,")
def b():
print("help,")
def c():
print("please")
def save_output():
# save output of all functions
def main():
a()
b()
c()
save_output()
main()
^因此,当调用main时,它会将abc,help,please
保存为文本文件
答案 0 :(得分:0)
你不能用你当前的结构,至少没有像检查终端那样疯狂(可能不存在)。
执行此操作的正确方法是在调用其他函数之前将标准输出重定向:
import sys
def a():
print("abc,")
def b():
print("help,")
def c():
print("please")
def main():
original_stdout = sys.stdout
sys.stdout = open('file', 'w')
a()
b()
c()
sys.stdout = original_stdout
main()
# now "file" contains "abc,help,please"
但是,也值得问为什么你想要这样做 - 有很多直接的方法来写一个文件,不涉及搞乱stdout,这可能会产生意想不到的后果。你能更充分地描述你的用例吗?
答案 1 :(得分:0)
你会考虑这样的事吗
def a():
return 'abc'
def b():
return 'help'
def c():
return 'please'
def save_output(file_name, *args):
with open(file_name, 'w') as f:
for x in args:
f.write('Function {0}() returned: {1}{2}'.format(x.__name__,x(),'\n'))
测试:
save_output('example.txt',a,b,c)
输出:
Function a() returned: abc
Function b() returned: help
Function c() returned: please