打印每个功能的输出

时间:2018-02-22 22:50:22

标签: python function save output

使用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保存为文本文件

2 个答案:

答案 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