在 Windows 上运行任何使用tqdm
进度条的应用程序已经成为一个非常令人头疼的问题。
我不清楚这是否是 Windows 故障,但该错误很容易重现。在cmd.exe或Powershell上运行以下代码:
from tqdm import *
import time
counter = 1000
for i in tqdm(range(counter)):
time.sleep(.01)
您可以在进度条增加以触发崩溃时执行以下操作:
- 使用鼠标左键选择窗口上的几个字符(即使是空格也可以,如下面的屏幕截图所示),然后右键单击或按任意键使应用程序崩溃:
错误消息说:
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)
我在Windows 10上使用Python 3.4.4和tqdm 4.19.5。
这很烦人,因为当我试图单击它以聚焦窗口时,鼠标意外地选择了窗口中的几个字符。
谁能澄清为什么会发生这种情况?这个问题有适当的解决方法吗?