第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有沒有辦法在Python中讀取stdout?

有沒有辦法在Python中讀取stdout?

慕萊塢森 2023-08-03 17:16:50
我想要的是將我在標(biāo)準(zhǔn)輸出中寫入的所有文本作為字符串獲取。from sys import stdout stdout.read()  # throws io.UnsupportedOperation: not readable我想要得到的示例:print("abc") stdout.read() == "abc"  # True
查看完整描述

3 回答

?
瀟湘沐

TA貢獻(xiàn)1816條經(jīng)驗 獲得超6個贊

不,正如文檔所說,stdout不可讀。將其視為將信息發(fā)送到物理打印機(jī)。例如,當(dāng)您將一頁文本發(fā)送到傳真打印機(jī)掃描儀設(shè)備時,您的程序如何讀取該輸出?字符被發(fā)送到輸出緩沖區(qū),向下發(fā)送到物理設(shè)備,然后刷新到紙張上。

處理這個問題的規(guī)范方法是使用日志記錄,它在大多數(shù)成熟語言(包括 Python)中都有多個支持包。您創(chuàng)建一個記錄器,其log方法(寫入輸出)將其輸入回顯到print您創(chuàng)建的另一個存儲中。您添加一個read方法來允許您訪問該商店。

這讓您需要做一些研究和一些編碼工作,但我相信您可以從這里開始。logger網(wǎng)上找一下教程。當(dāng)然,如果您對這種編碼感到困惑,您可以在 Stack Overflow 上發(fā)布您的示例。:-)


查看完整回答
反對 回復(fù) 2023-08-03
?
子衿沉夜

TA貢獻(xiàn)1828條經(jīng)驗 獲得超3個贊

如果您使用的是 3.4 或更高版本,可以在 contextlib 文檔中找到此方法


f = io.StringIO()

with contextlib.redirect_stdout(f):

   ... stuff ...


result = f.getvalue()

請注意,對 stdout 的影響是全局的,因此不要在庫或線程應(yīng)用程序中使用它。


查看完整回答
反對 回復(fù) 2023-08-03
?
牧羊人nacy

TA貢獻(xiàn)1862條經(jīng)驗 獲得超7個贊

如果您不想使用logger,您可以創(chuàng)建自定義打印功能:


from io import StringIO


printstore = StringIO()


def myprint(*args, **kwargs):

    print(*args, **kwargs) # unmodified print

    kwargs["file"] = printstore

    print(*args, **kwargs) # print to StringIO

這樣做的優(yōu)點是您可以獲得內(nèi)置print.

一個缺點是它只捕獲用 打印的輸出myprint。


查看完整回答
反對 回復(fù) 2023-08-03
  • 3 回答
  • 0 關(guān)注
  • 197 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號