[英]Assign a function output prints to a variable in python
我有一個函數(在某些項目中)會打印結果。當我從命令行或另一個python項目中調用它時,它將在終端上打印輸出。 但我想將所有打印結果存儲在一個變量中,如下所示:
output = function_name(function_args)
而不是將結果打印在終端上,而是將它們存儲在output
變量中。 同樣,主函數返回一些東西(只是一個數字作為狀態),結果我不想那個數字。
您可以通過重新綁定sys.stdout
來做到這一點:
>>> def foo():
... print('potato')
...
>>> import sys, io
>>> sys.stdout = io.StringIO()
>>> foo()
>>> val = sys.stdout.getvalue()
>>> sys.stdout = sys.__stdout__ # restores original stdout
>>> print(val)
potato
為了更好地做到這一點,請考慮編寫上下文管理器。 如果您使用的是Python 3.4+,則已經為您編寫了 。
>>> from contextlib import redirect_stdout
>>> f = io.StringIO()
>>> with redirect_stdout(f):
... foo()
...
>>> print(f.getvalue())
potato
明智的解決方案簡單明了:修復函數,使其返回正確的數據,而不是打印出來。 否則,您可以使用wim發布的技巧,但是假設您有辦法借助這種復雜的解決方案來解決故障功能,則屬於“ WTF”類別。
注意,當然,如果您沒有使用該函數的代碼,或者僅使用5分鍾一次腳本,捕獲sys.stdout
是一個方便的后備。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.