[Python][技巧]Python同行输出;Python实现控制台进度条;

Python实现控制台进度条效果

此为封装好的类
使用时创建Progress类即可
请使用完成后及时删除

myProgress = Progress	#创建实例
myProgress.set(num)		#设置进度,范围为0-1,如果为1就会换行
del myProgress			#删除实例
import sys

# <editor-fold desc="进度条简易实现">
class Progress:
    """
    进度条类,按照IO的资源互斥,应该使类为单例,并且加锁,暂时简便设计\n
    使用set设置进度,范围为0-1\n
    在进度完成时,应当及时del对象\n
    """
    title = ""
    length = 0
    quantity = 0
    def __init__(self, title="Progress", len=20):
        self.title = title
        self.length = len
        self.print()

    def set(self, quantity):
        quantity = 1 if quantity > 1 else quantity
        self.quantity = quantity
        self.print()

    def print(self):
        mBody = round(self.quantity * self.length)
        mVoid = self.length - mBody
        sys.stdout.write('\r' + self.title + ': [' + \
                        '#' * mBody + '\u0020' * mVoid + ']' + \
                        str(round(self.quantity * 100)) + '%')
        sys.stdout.flush()

    def __del__(self):
        sys.stdout.write("\n")
        sys.stdout.flush()
        self.title = ""
        self.length = 0
        self.quantity = 0
# </editor-fold>
原理

主要使用 sys.stdout.write() 写入输出缓冲区
然后使用 sys.stdout.flush() 更新输出缓冲区
其中使用 \r 转义字符用于回车
回车本是指返回当前行行首
但是在打字机过渡到电脑时,回车的意义变为了下一行行首

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python控制台进度条可以通过在循环中使用特定字符来显示进度。以下是两种简单的源代码来显示控制台进度条: 代码1: ```python import time for i in range(1, 101): print('\r' + '▋' * i + '当前进度:{}%'.format(i), end='') time.sleep(0.3) ``` 这段代码使用`\r`来回车到行首,然后使用`▋`字符来表示进度条的进度,最后使用`format()`函数将当前进度百分比插入到字符串中。 代码2: ```python import sys import time for i in range(1, 101): sys.stdout.write('\r' + '▋' * i + '当前进度:{}%'.format(i)) sys.stdout.flush() time.sleep(0.3) ``` 这段代码使用`sys.stdout.write()`来在同一行输出进度条,然后使用`sys.stdout.flush()`来立即刷新输出,以便显示进度条的更新。 您可以根据需要选择其中一种代码来实现控制台进度条效果。希望对您有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [python实现控制台输出文本进度条](https://blog.csdn.net/m0_46653437/article/details/109152688)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [【Python实用工具】用Python控制台输出进度条](https://blog.csdn.net/qq_41823684/article/details/118578754)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值