首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >tqdm在Windows控制台意外鼠标/键盘输入时崩溃

tqdm在Windows控制台意外鼠标/键盘输入时崩溃
EN

Stack Overflow用户
提问于 2018-01-21 21:39:42
回答 1查看 671关注 0票数 1

在Windows上运行任何使用tqdm进度条的应用程序已经成为一个非常棘手的问题。

我不清楚这是否是Windows的错误,但是这个bug很容易复制。在cmd.exePowershell上运行以下代码

代码语言:javascript
运行
复制
from tqdm import *
import time

counter = 1000
for i in tqdm(range(counter)):
     time.sleep(.01)

在进度条增加以触发崩溃时,您可以执行以下操作:

  • 使用鼠标左键在窗口中选择几个字符(就像下面的屏幕截图所演示的那样,即使空格也可以),然后右击或按任意键使应用程序崩溃:

错误消息说:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "tqdmTest.py", line 5, in <module>
    for i in tqdm(range(counter)):
  File "C:\Users\brcod\AppData\Roaming\Python\Python34\site-packages\tqdm\_tqdm.py", line 979, in __iter__
    sp(self.__repr__())
  File "C:\Users\brcod\AppData\Roaming\Python\Python34\site-packages\tqdm\_tqdm.py", line 241, in print_status
    fp_write('\r' + s + (' ' * max(last_len[0] - len_s, 0)))
  File "C:\Users\brcod\AppData\Roaming\Python\Python34\site-packages\tqdm\_tqdm.py", line 234, in fp_write
    fp.write(_unicode(s))
OSError: raw write() returned invalid length 306 (should have been between 0 and 153)

我使用Python3.4.4Windows 10上使用tqdm 4.19.5

这是非常恼人的,因为当我试图点击窗口来聚焦窗口时,鼠标意外地选择了窗口中的几个字符。

有人能说明为什么会发生这种情况吗?这个问题有适当的解决办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-22 03:12:52

解决方案1:解决此问题的最简单的解决方案是在cmd.exe窗口的属性中禁用QuickEdit模式,以防止鼠标单击意外选择和粘贴文本:

解决方案2:这也可以通过编程方式处理。只需重写循环以捕获异常并在发生时对其进行pass

代码语言:javascript
运行
复制
from tqdm import *
import time

maxCount = 1000
pbar = tqdm(total = maxCount)

for i in range(maxCount+1):
     try:
          pbar.update(i - pbar.n)
     except OSError as e:
          pass

     time.sleep(.01)

pbar.close()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48371993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档