如何将 python 打印语句作为字符串执行?

How to get execution of python print statements as a string?

我正在编写一个 python 脚本,其中包含一个包含 python 打印语句作为字符串的列表。在我的函数中,我使用 for 循环 运行 执行函数 运行 那些语句。

这是我的函数:

g_list = ["print('Wow!')\n", "print('Great!')\n", "print('Epic!')\n"]

def run_statements():
    for item in g_list:
        exec(item)

当我 运行 run_statements() 函数时,我得到以下输出:

Wow! 
Great! 
Epic!

基本上,我想将输出保存为字符串,以便以后可以将其保存到我的数据库中。

有人知道我该怎么做吗?

编辑: 在以下问题中:python: get the print output in an exec statement 他正在尝试获取输出,我的问题与我尝试获取输出的方式不同字符串

如果您想保存打印的内容,您可以创建一个自定义命令,并将输出保存到一个变量中。例如

output_bin = ""

def printsave(string):
    print string
    if len(string) > 1:
        if string[-2] == "\n":
            output_bin = output_bin + string
        else:
            output_bin = output_bin + string + "\n"
    else:
        output_bin = output_bin + string + "\n

然后,每当您调用 printsave() 时,它都会保存到字符串 output_bin 中。如果你想把它保存到一个数组中...

output_bin = []

def printsave(string):
    print string
    if len(string) > 1:
        if string[-2] == "\n":
            output_bin.append(string)
        else:
            output_bin.append(string + "\n")
    else:
        output_bin.append(string + "\n)

如果您确实需要 print 字符串列表中的语句(而不是另一个答案中建议的具有不同名称的类似打印的函数),您可以重新分配名称 print 到你自己的函数中,在小心地、小心地、小心地保存旧的 print 函数之后,这样你就可以小心地、小心地、小心地把名字 print 恢复到它的正确定义中。像这样:

>>> g_list = ["print('Wow!')\n", "print('Great!')\n", "print('Epic!')\n"]
>>> old_print = print
>>> def print(s): # redefining the built-in print function! terrible idea
...   global catstr
...   catstr += s
...
>>> catstr = ""
>>> for s in g_list: exec(s)
...
>>> catstr
'Wow!Great!Epic!'
>>> print = old_print # Don't forget this step!

这完全是不道德的,我也没有劝你这样做。我只说你可以做到。

强调这个计划的不可取性:exec应该很少使用;有危险;应该很少将内置函数的名称重新分配给不同的函数;有危险。在同一代码中执行这两项操作真的会毁了你的一天,尤其是在维护程序员编辑你的代码后 "just a little," 没有意识到潜在的影响。