關(guān)于sys.stdout和print的區(qū)別詳解
一、sys.stdout的形式就是print的一種默認輸出格式,等于print "%VALUE%"
print函數(shù)是對sys.stdout的高級封裝,看下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是默認調(diào)用了sys.stdout.write()方法將輸出打印到控制臺
print 也可通過file參數(shù)將輸出打印到其他文件中
f = open('test.txt','a')
print('this is a test',file=f)
二、sys.stdout.write()輸出不會自動換行,沒有end,可用轉(zhuǎn)義字符自行控制
/n 換行
/r 回車到本行首,可刷新輸出
如用sys.stdout.write() 和\r實現(xià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)
運行結(jié)果如下圖:

sys.stdout.flush()強制刷新緩沖區(qū),
緩沖區(qū)的刷新方式:
1.flush()刷新緩存區(qū)
2.緩沖區(qū)滿時,自動刷新
3.文件關(guān)閉或者是程序結(jié)束自動刷新。
當我們需要打印一些字符時,并不是立刻就打印,而是先將需要打印的字符放入緩沖區(qū),在緩沖區(qū)刷新時打印,當緩沖區(qū)未滿,或者程序運行未結(jié)束時,可使用sys.stdout.flush()強制刷新緩沖區(qū),立刻進行打印;
附:寫出漂亮的進度條模塊tqdm
from tqdm import tqdm import time for i in tqdm(range(10000)): time.sleep(0.01)
運行結(jié)果如下:

以上這篇關(guān)于sys.stdout和print的區(qū)別詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
caffe的python接口繪制loss和accuracy曲線
這篇文章主要為大家介紹了caffe的python接口繪制loss和accuracy曲線示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06
Python探針完成調(diào)用庫的數(shù)據(jù)提取
這篇文章主要介紹了Python探針完成調(diào)用庫的數(shù)據(jù)提取,Python中可以通過sys.meta_path來實現(xiàn)import?hook的功能,下文詳細資料介紹,需要的小伙伴可以參考一下2022-05-05
python人工智能tensorflow函數(shù)tf.get_collection使用方法
這篇文章主要為大家介紹了python人工智能tensorflow函數(shù)tf.get_collection使用方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05
使用Python實現(xiàn)下載網(wǎng)易云音樂的高清MV
本文給大家分享的是一則使用Python實現(xiàn)下載網(wǎng)易云音樂中高清MV的代碼,本人新手,沒有做特別的功能,僅僅是直接循環(huán)了MV的id,小伙伴們可以自己擴展下。2015-03-03

