在Python中,exec()函數用于執行存儲在字符串或對象中的Python代碼。默認情況下,exec()函數不會返回任何輸出,但你可以通過捕獲sys.stdout來處理輸出。下面是一個示例:
import sys
code = """
print("Hello, World!")
x = 1 + 2
print("The result of x is:", x)
"""
# 保存原始stdout引用
original_stdout = sys.stdout
try:
# 將stdout重定向到StringIO對象
from io import StringIO
sys.stdout = StringIO()
# 執行代碼
exec(code)
# 獲取執行期間的輸出
output = sys.stdout.getvalue()
print("Output:", output)
except Exception as e:
print("An error occurred:", e)
finally:
# 恢復原始stdout
sys.stdout = original_stdout
在這個示例中,我們首先導入sys模塊,然后定義一個包含要執行的代碼的字符串。我們保存了原始的sys.stdout引用,然后將其重定向到一個StringIO對象。這樣我們就可以捕獲代碼執行期間的輸出。接下來,我們使用exec()函數執行代碼,并使用getvalue()方法從StringIO對象中獲取輸出。最后,我們將sys.stdout恢復為原始引用。