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

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

您如何簡單地更改 Python 腳本以捕獲其自身及其子進程寫入 stdout 的所有內(nèi)容?

您如何簡單地更改 Python 腳本以捕獲其自身及其子進程寫入 stdout 的所有內(nèi)容?

眼眸繁星 2022-06-07 19:48:47
假設(shè)您有一個大腳本,它在許多地方寫入標準輸出,直接(使用 Python 功能,如或print())和間接通過啟動寫入標準輸出的 es。loggingstdoutsubprocess有沒有一種簡單的方法來捕獲所有這些標準輸出?例如,如果您希望腳本在完成時發(fā)送一封包含所有輸出的電子郵件?!拔⒉蛔愕馈笔侵负愣ǘ皇蔷€性代碼更改。subrprocess否則,我相信您將不得不在每個調(diào)用中引入重定向參數(shù)(和一些累積邏輯) 。您可以通過重定向來捕獲腳本本身的所有輸出,但是對于所有調(diào)用,或者實際上您可能用于啟動這些子進程的任何其他類型的代碼sys.stdout,我沒有看到類似的“包羅萬象”的簡單解決方案。subprocess有沒有這樣的解決方案,或者必須使用一個運行腳本來調(diào)用這個 Python 腳本作為子進程并stdout從該子進程中捕獲所有內(nèi)容?
查看完整描述

1 回答

?
慕尼黑的夜晚無繁華

TA貢獻1864條經(jīng)驗 獲得超6個贊

可能是這樣做的最短方法,而不是特定于 python 的方法是使用os.dup2()例如:


f = open('/tmp/OUT', 'w')

os.dup2(f.fileno(), 1)

f.close()

它的作用是替換1通常是您的stdout. 使用文件描述符f(然后您可以關(guān)閉)。之后,所有寫入stdout和寫入/tmp/OUT. 這種重復是可繼承的,子進程將 fd1寫入同一個文件。


查看完整回答
反對 回復 2022-06-07
  • 1 回答
  • 0 關(guān)注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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