簡體   English   中英

將函數輸出輸出分配給python中的變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM