如何获取 python 中 eval 中打印的内容?
How to get what was printed inside an eval in python?
我正在制作一个 Discord Bot,我想知道是否有可能得到 eval 打印的结果。
我知道你可以在 eval 开始时开始记录打印,并在 eval 完成时停止,这样你就可以得到在 eval 期间打印的内容,但程序使用异步,我担心如果我这样做我还可以在 eval 之外打印一些东西。
有什么方法可以获取仅在一次评估期间打印的内容吗?
谢谢!
我知道使用 eval 不好,但我不是在问 eval 是好是坏。
真不敢相信我以前没想到这一点。
将 print 设置为您的函数,它既记录内容,又将其传递给普通的 print 函数并让 eval 使用它,如下所示:
try: #Imagine this was in a try
printlog = []
print = yourfunction #yourfunction appends to printlog prints that
#go through it and then prints them normally
eval(stuff)
#printlog now has what was printed
通过这种方式,无论其他任何内容同时 运行,您都将只在 eval 中打印出来。
我正在制作一个 Discord Bot,我想知道是否有可能得到 eval 打印的结果。
我知道你可以在 eval 开始时开始记录打印,并在 eval 完成时停止,这样你就可以得到在 eval 期间打印的内容,但程序使用异步,我担心如果我这样做我还可以在 eval 之外打印一些东西。
有什么方法可以获取仅在一次评估期间打印的内容吗?
谢谢!
我知道使用 eval 不好,但我不是在问 eval 是好是坏。
真不敢相信我以前没想到这一点。
将 print 设置为您的函数,它既记录内容,又将其传递给普通的 print 函数并让 eval 使用它,如下所示:
try: #Imagine this was in a try
printlog = []
print = yourfunction #yourfunction appends to printlog prints that
#go through it and then prints them normally
eval(stuff)
#printlog now has what was printed
通过这种方式,无论其他任何内容同时 运行,您都将只在 eval 中打印出来。