如何将 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," 没有意识到潜在的影响。
我正在编写一个 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," 没有意识到潜在的影响。