![](/img/trans.png)
[英]Pythonic way to flush() both sys.stdout & sys.stderr
[英]Python sys.stderr flush frequency
sys.stderr 多久刷新一次緩沖區,這是不同環境之間的標准嗎?
>>> import sys
>>> sys.__stderr__
<open file '<stderr>', mode 'w' at 0x2b4fcb7ac270>
我看到它只是一種標准文件類型,但我不知道它應該是什么緩沖值。 dir()
似乎也沒有產生任何有用的信息。
更新: sys.stderr
自 Python 3.9 起默認為行緩沖。 如果python
收到-u
命令行選項或設置了$PYTHONUNBUFFERED
環境變量,則 stdout 和 stderr 流將被強制無緩沖(包括自 Python 3.7 起的文本層)。
舊答案:
在 Python 2 上,我無法在文檔sys.stderr
的緩沖中找到指定的位置。 我希望與C 中無緩沖的stderr
行為相同(Windows 除外) ,我不知道 c99 標准是否要求這樣做。 標准錯誤流在 POSIX 中沒有完全緩沖。 -u
選項強制標准流在 Python 2 中無緩沖。
交互時,標准流是行緩沖的。 否則,它們像常規文本文件一樣被塊緩沖。 您可以使用
-u
命令行選項覆蓋此值。
強制 stdout 和 stderr 流的二進制層(可用作它們的
buffer
屬性)無緩沖。 如果寫入控制台,文本 I/O 層仍將被行緩沖,如果重定向到非交互式文件,則將被塊緩沖。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.