您好,登錄后才能下訂單哦!
一、sys.stdout的形式就是print的一種默認輸出格式,等于print "%VALUE%"
print函數是對sys.stdout的高級封裝,看下print函數的解釋
Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline.
print是默認調用了sys.stdout.write()方法將輸出打印到控制臺
print 也可通過file參數將輸出打印到其他文件中
f = open('test.txt','a') print('this is a test',file=f)
二、sys.stdout.write()輸出不會自動換行,沒有end,可用轉義字符自行控制
/n 換行
/r 回車到本行首,可刷新輸出
如用sys.stdout.write() 和\r實現自定義進度條
# -*- coding: utf-8 -*- from tqdm import tqdm import time import sys for i in tqdm(range(100)): time.sleep(.1) for i in range(100): a = (i+1)/5 b = 20-a #sys.stdout.write('\r>>convert image %d/%d'%(i,b)) sys.stdout.write('\r|%s%s|%d%%'%(a*'▇',b*' ',i+1)) sys.stdout.flush() time.sleep(.1)
運行結果如下圖:
sys.stdout.flush()強制刷新緩沖區,
緩沖區的刷新方式:
1.flush()刷新緩存區
2.緩沖區滿時,自動刷新
3.文件關閉或者是程序結束自動刷新。
當我們需要打印一些字符時,并不是立刻就打印,而是先將需要打印的字符放入緩沖區,在緩沖區刷新時打印,當緩沖區未滿,或者程序運行未結束時,可使用sys.stdout.flush()強制刷新緩沖區,立刻進行打印;
附:寫出漂亮的進度條模塊tqdm
from tqdm import tqdm import time for i in tqdm(range(10000)): time.sleep(0.01)
運行結果如下:
以上這篇關于sys.stdout和print的區別詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。