最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中的sys.stdout.write實(shí)現(xiàn)打印刷新功能

 更新時(shí)間:2020年02月21日 13:31:20   作者:roohom  
今天小編就為大家分享一篇Python中的sys.stdout.write實(shí)現(xiàn)打印刷新功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

前言:

今天學(xué)習(xí)python的常用模塊的時(shí)候,了解到了time模塊和datetime模塊,于是想在編譯環(huán)境中實(shí)時(shí)打印出時(shí)間,不會(huì)換行,且打印的時(shí)候自動(dòng)刪除前一步打印出的時(shí)間(本質(zhì)原理不是這樣),而不是像print那樣打印之后自動(dòng)換行再重新打印。

想要直接看到效果及方法,請(qǐng)直接跳到后文 解決辦法。

我們先來看看Print方法打印的效果:

代碼:

from datetime import datetime as dt
import sys
import time
 
for i in range(5):
  print(dt.now())
  time.sleep(1)

輸出結(jié)果:

C:\Users\Administrator\PycharmProjects\untitled\venv\Scripts\python.exe C:/Users/Administrator/PycharmProjects/untitled/test.py
2018-08-06 16:46:46.636256
2018-08-06 16:46:47.636313
2018-08-06 16:46:48.636370
2018-08-06 16:46:49.636427
2018-08-06 16:46:50.637484
 
Process finished with exit code 0

可以看到,用print打印出來自動(dòng)換行且不會(huì)清除上一個(gè)結(jié)果

help一下看看:

help(print)

輸出:

print(...)
  print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
  
  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.
  flush: whether to forcibly flush the stream.

可以看到end=“\n”表示了print自帶換行

如果我想要在一行中打印一串信息,并且在下一次執(zhí)行的時(shí)候刪除這一行再重新打?。ㄐЧ愃迫绱耍?,該如何做呢?嘗試清屏可不可以?

清屏試一試,查閱別的博客的方法有如下代碼:

import os
 
os.system('cls')

但這是在命令行里使用的,用在編譯器里不行。

解決辦法

這時(shí)候就要用到sys.stdout.write了

使用如下方法:

from datetime import datetime as dt
import sys
import time
 
 
while True:
  a = dt.now()
  sys.stdout.write("\r{0}".format(a))
  sys.stdout.flush()
  time.sleep(1)
 

以及:

from datetime import datetime as dt
import sys
import time
 
 
for i in range(20):
  a = dt.now()
  sys.stdout.write("\r{0}".format(a))
  sys.stdout.flush()
  sys.stdout.write('\033[4A')
  time.sleep(1)

都可以實(shí)現(xiàn)實(shí)時(shí)打印。

關(guān)鍵就在于使用'\r'這個(gè)轉(zhuǎn)義字符(回到行首), sys.stdout.write首先打印這一行后不帶任何結(jié)尾(前文已經(jīng)說過print打印結(jié)尾帶end="\n",表示自帶換行,換行了就不能在對(duì)已經(jīng)打印的這一行進(jìn)行更改編輯),使用了轉(zhuǎn)移字符"\r"使得光標(biāo)回到行首,再把緩沖區(qū)顯示出來,就得到了我們所需要的效果。

效果輸出:

C:\Users\Administrator\PycharmProjects\untitled\venv\Scripts\python.exe C:/Users/Administrator/PycharmProjects/untitled/test.py
2018-08-06 18:26:21.264878

Run只會(huì)顯示這一個(gè),并且一秒鐘更新一次。

這樣就可以利用它來打印進(jìn)度條。

進(jìn)度條的特點(diǎn):

- 有標(biāo)刻度顯示所占總進(jìn)度比例

- 有百分比顯示所占比例

代碼示例:

import time,sys
 
for i in range(100):
  percent = i / 100
  sys.stdout.write("\r{0}{1}".format("|"*i , '%.2f%%' % (percent * 100)))
  sys.stdout.flush()
  time.sleep(1)

輸出效果:

|||||||||||||||||||||||||||||||||33.00%

拓展:Python小知識(shí)-sys.stdout.write和print進(jìn)度條打印方式

打印進(jìn)度條的方法用兩種:

一、sys.stdout.write方式

這個(gè)方法中必須使用這句話每次來清理緩存。

sys.stdout.flush()

import sys
import time

i = 0
for i in range(20):
  time.sleep(1)
  sys.stdout.write("\r# Process: %0.1f %%" % (float(i + 1) / float(20) * 100))
  sys.stdout.flush()

二、print方式

其中用print('',end='')來實(shí)現(xiàn)sys.stdout.write()

import time
i = 0
for i in range(20):
  time.sleep(1)
  print("\r# Process: %0.1f %%" % (float(i + 1) / float(20) * 100),end="")

結(jié)果如圖1所示:

圖1

三、\r等轉(zhuǎn)義字符操作

轉(zhuǎn)義字符 描述
\ 反斜杠符號(hào)
\r 回車
\t 橫向制表符
\n 換行
\' 單引號(hào)
\” 雙引號(hào)
\oyy 八進(jìn)制數(shù)yy代表的字符,例如:\o12代表換行
\xyy 十進(jìn)制數(shù)yy代表的字符,例如:\x0a代表換行
\f 換頁
\b 退格(Backspace)

以上這篇Python中的sys.stdout.write實(shí)現(xiàn)打印刷新功能就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Django實(shí)現(xiàn)前后端登錄

    Django實(shí)現(xiàn)前后端登錄

    這篇文章主要介紹了Django實(shí)現(xiàn)前后端登錄的示例,幫助大家更好的理解和學(xué)習(xí)使用Django,感興趣的朋友可以了解下
    2021-04-04
  • python?moviepy?的用法入門篇

    python?moviepy?的用法入門篇

    MoviePy(全套文件)是一個(gè)用于視頻編輯Python庫:切割、拼接、標(biāo)題插入,視頻合成(即非線性編輯),視頻處理和自定義效果的創(chuàng)造,本文給大家介紹python?moviepy?的用法詳解,感興趣的朋友跟隨小編一起看看吧
    2022-02-02
  • Python如何實(shí)現(xiàn)播放本地音樂并在web頁面播放

    Python如何實(shí)現(xiàn)播放本地音樂并在web頁面播放

    這篇文章主要為大家詳細(xì)介紹了Python如何實(shí)現(xiàn)播放本地音樂并在web頁面播放,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-02-02
  • Python從Excel讀取數(shù)據(jù)并使用Matplotlib繪制成二維圖像

    Python從Excel讀取數(shù)據(jù)并使用Matplotlib繪制成二維圖像

    本課程實(shí)現(xiàn)使用 Python 從 Excel 讀取數(shù)據(jù),并使用 Matplotlib 繪制成二維圖像。這一過程中,將通過一系列操作來美化圖像,最終得到一個(gè)可以出版級(jí)別的圖像。本課程對(duì)于需要書寫實(shí)驗(yàn)報(bào)告,學(xué)位論文,發(fā)表文章,做報(bào)告的學(xué)員具有較大價(jià)值
    2023-02-02
  • 使用Matplotlib繪制平行坐標(biāo)系的示例詳解

    使用Matplotlib繪制平行坐標(biāo)系的示例詳解

    平行坐標(biāo)系,是一種含有多個(gè)垂直平行坐標(biāo)軸的統(tǒng)計(jì)圖表,這篇文章主要為大家介紹了如何使用繪制平行坐標(biāo)系,需要的小伙伴可以參考一下
    2023-07-07
  • django 解決manage.py migrate無效的問題

    django 解決manage.py migrate無效的問題

    今天小編就為大家分享一篇django 解決manage.py migrate無效的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python中[?]、[:]和[::]的用法總結(jié)

    Python中[?]、[:]和[::]的用法總結(jié)

    [:]與[::]語法是通用序列操作(Common Sequence Operations)其中的兩個(gè),下面這篇文章主要給大家介紹了關(guān)于Python中[?]、[:]和[::]用法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常全面,需要的朋友可以參考下
    2023-06-06
  • Python:pycharm中虛擬環(huán)境venv的使用及說明

    Python:pycharm中虛擬環(huán)境venv的使用及說明

    文章介紹了虛擬環(huán)境的必要性和實(shí)踐方法,虛擬環(huán)境可以幫助用戶管理不同項(xiàng)目所需的Python版本和第三方模塊,避免版本沖突和模塊沖突,文章詳細(xì)介紹了如何使用Python自帶的`venv`模塊創(chuàng)建和管理虛擬環(huán)境,并通過命令行和PyCharm兩種方式構(gòu)建虛擬環(huán)境
    2025-01-01
  • python基礎(chǔ)教程之類class定義使用方法

    python基礎(chǔ)教程之類class定義使用方法

    Python中的類(Class)是一個(gè)抽象的概念,比函數(shù)還要抽象,這也就是Python的核心概念,面對(duì)對(duì)象的編程方法(OOP),其它如:Java、C++等都是面對(duì)對(duì)象的編程語言
    2014-02-02
  • 基于Python實(shí)現(xiàn)二維圖像雙線性插值

    基于Python實(shí)現(xiàn)二維圖像雙線性插值

    雙線性插值,又稱為雙線性內(nèi)插。在數(shù)學(xué)上,雙線性插值是有兩個(gè)變量的插值函數(shù)的線性插值擴(kuò)展,其核心思想是在兩個(gè)方向分別進(jìn)行一次線性插值。本文將用Python實(shí)現(xiàn)二維圖像雙線性插值,感興趣的可以了解下
    2022-06-06

最新評(píng)論

龙游县| 靖宇县| 井陉县| 盐城市| 浦城县| 秦安县| 射阳县| 额济纳旗| 海丰县| 遵化市| 高雄县| 济阳县| 阜阳市| 涟源市| 获嘉县| 叙永县| 彰化县| 遵义市| 郓城县| 石门县| 敦化市| 泌阳县| 泸溪县| 潍坊市| 安泽县| 合阳县| 皋兰县| 高密市| 乌鲁木齐县| 思南县| 沙坪坝区| 华宁县| 齐齐哈尔市| 瓦房店市| 且末县| 五河县| 元谋县| 东港市| 天全县| 万全县| 乐陵市|