溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

關(guān)于sys.stdout和print的區(qū)別詳解

發(fā)布時(shí)間:2020-09-05 11:33:12 來(lái)源:腳本之家 閱讀:234 作者:朔方_ 欄目:開發(fā)技術(shù)

一、sys.stdout的形式就是print的一種默認(rèn)輸出格式,等于print "%VALUE%"

print函數(shù)是對(duì)sys.stdout的高級(jí)封裝,看下print函數(shù)的解釋

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是默認(rèn)調(diào)用了sys.stdout.write()方法將輸出打印到控制臺(tái)

print 也可通過(guò)file參數(shù)將輸出打印到其他文件中

f = open('test.txt','a')
print('this is a test',file=f)

二、sys.stdout.write()輸出不會(huì)自動(dòng)換行,沒(méi)有end,可用轉(zhuǎn)義字符自行控制

/n 換行

/r 回車到本行首,可刷新輸出

如用sys.stdout.write() 和\r實(shí)現(xiàn)自定義進(jìn)度條

# -*- 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)

運(yùn)行結(jié)果如下圖:

關(guān)于sys.stdout和print的區(qū)別詳解

sys.stdout.flush()強(qiáng)制刷新緩沖區(qū),

緩沖區(qū)的刷新方式:

1.flush()刷新緩存區(qū)

2.緩沖區(qū)滿時(shí),自動(dòng)刷新

3.文件關(guān)閉或者是程序結(jié)束自動(dòng)刷新。

當(dāng)我們需要打印一些字符時(shí),并不是立刻就打印,而是先將需要打印的字符放入緩沖區(qū),在緩沖區(qū)刷新時(shí)打印,當(dāng)緩沖區(qū)未滿,或者程序運(yùn)行未結(jié)束時(shí),可使用sys.stdout.flush()強(qiáng)制刷新緩沖區(qū),立刻進(jìn)行打??;

附:寫出漂亮的進(jìn)度條模塊tqdm

from tqdm import tqdm 
import time
for i in tqdm(range(10000)): 
 time.sleep(0.01) 

運(yùn)行結(jié)果如下:

關(guān)于sys.stdout和print的區(qū)別詳解

以上這篇關(guān)于sys.stdout和print的區(qū)別詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI