如何以字符串形式执行python打印语句?

如何以字符串形式执行python打印语句?,python,exec,Python,Exec,我正在编写一个python脚本,其中包含一个列表,其中包含作为字符串的python打印语句。在我的函数中,我使用for循环来运行exec函数来运行这些语句 以下是我的功能: g_list = ["print('Wow!')\n", "print('Great!')\n", "print('Epic!')\n"] def run_statements(): for item in g_list: exec(item) 当我运行run_statements()函数时,我得

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

以下是我的功能:

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!
基本上,我希望将输出保存为字符串,以便以后可以将其保存到数据库中

有人知道我怎么做吗


编辑:在以下问题上:他正在尝试获取输出,我的问题与我尝试获取字符串输出的方式不同

如果要保存打印内容,可以创建自定义命令,并将输出保存到变量。比如说

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\u 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
重新指定给您自己的函数,以便您可以仔细、仔细地,小心地将名称
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
应很少使用;这是危险的;将内置函数的名称重新分配给不同的函数应该很少进行;这很危险。在同一代码中同时执行这两项操作可能会毁了你的一天,尤其是在维护程序员“稍微”编辑了你的代码之后,却没有意识到潜在的影响。

打印的目的是将文本发送到某个地方,而不是将其保存在内存中。如果您想将其保存为字符串,只需这样做,然后在适当的时候打印即可。此外,无论您试图实现什么样的目标,
exec
都可能是错误的方法。您能否给出您期望最终结果的确切示例输出?你说的是字符串
。所以你想要:
“哇!\nGreat!\nEpic\n”`?@idjaw是的!这正是我想要的want@idjaw它给出了语法错误way@Elisha512看看发布的副本。这不是有效的Python语法。这不正确。@idjaw抱歉,我根本没有测试它/@我做错了什么?如果你愿意告诉我,你不能在Python中使用连字符。我强烈建议对代码进行测试,以确保它是一个有效的解决方案,从而避免将OP引入可能不起作用的代码路径。谢谢@D-Von我理解它的危险性,但它可能正是我所寻找的东西。我将对它进行测试,如果工作正常,则将其标记为更正。该语句给出错误:old_print=print该无效语法是否在Python3.x上?这就是我运行代码的地方。它在Python2.x上不起作用,在Python2.x中,
print
是一个内置命令,而不是一个函数。我使用的是Python2.7.11,它在Python3中工作得非常正确。我已经检查过了,但当我在函数中包含此项时,它不起作用。我已将其添加为此答案的更新。你能检查一下吗?