亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

禁用輸出緩沖

禁用輸出緩沖

嗶嗶one 2019-05-27 15:02:15
禁用輸出緩沖Python的解釋器默認啟用輸出緩沖sys.stdout嗎?如果答案是肯定的,那么禁用它的所有方法是什么?建議到目前為止:使用-u命令行開關包裝sys.stdout在每次寫入后刷新的對象設置PYTHONUNBUFFEREDenv varsys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)是否有任何其他方式來設置一些全局標志sys/ sys.stdout程序執行過程中?
查看完整描述

4 回答

?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

來自Magnus Lycka的回復郵件列表

您可以使用“python -u”(或#!/ usr / bin / env python -u等)或通過設置環境變量PYTHONUNBUFFERED跳過整個python進程的緩沖。

您還可以將sys.stdout替換為其他流,例如在每次調用后執行刷新的包裝器。

class Unbuffered(object):
   def __init__(self, stream):
       self.stream = stream   def write(self, data):
       self.stream.write(data)
       self.stream.flush()
   def writelines(self, datas):
       self.stream.writelines(datas)
       self.stream.flush()
   def __getattr__(self, attr):
       return getattr(self.stream, attr)import sys
sys.stdout = Unbuffered(sys.stdout)print 'Hello'


查看完整回答
反對 回復 2019-05-27
?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

我寧愿把答案放在如何刷新Python打印輸出?或者在Python的print函數中,在調用緩沖區時刷新緩沖區?,但由于它們被標記為這個副本(我不同意),我會在這里回答。

由于Python 3.3 print()支持關鍵字參數“flush”(參見文檔):

print('Hello World!', flush=True)


查看完整回答
反對 回復 2019-05-27
?
四季花海

TA貢獻1811條經驗 獲得超5個贊

# reopen stdout file descriptor with write mode# and 0 as the buffer size (unbuffered)sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)

致謝:“塞巴斯蒂安”,在Python郵件列表的某個地方。

第三方編輯

最新版本的Python 3不支持


查看完整回答
反對 回復 2019-05-27
?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

是的。

您可以使用“-u”開關在命令行上禁用它。

或者,您可以在每次寫入時在sys.stdout上調用.flush()(或者使用自動執行此操作的對象將其包裝)


查看完整回答
反對 回復 2019-05-27
  • 4 回答
  • 0 關注
  • 799 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號