Python进度条ValueError:值超出范围(Python Progress Bar ValueError: Value out of range)
我的进度条达到100%,然后抛出错误
from progressbar import Percentage, ProgressBar,Bar,ETA pbar = ProgressBar(widgets=[Bar('=', '[', ']'), ' ', Percentage(), ' ', ETA()]).start() for i,row in enumerate(cursor): ''' do some work here ''' pbar.update(i)这就是我得到的
Traceback (most recent call last):=========================] 100% ETA: 0:00:00 File "X:\src\dbtest\PymssqlCheck.py", line 27, in <module> fiddler.getRows(condetails, dbdetails, 'compliance', 'doctable', '*', '1000') File "X:\src\utilities\fiddler.py", line 45, in getRows pbar.update(i) File "X:\Anaconda2\lib\site-packages\progressbar\__init__.py", line 271, in update raise ValueError('Value out of range') ValueError: Value out of range为什么它达到100%然后失败? 我在用
https://github.com/niltonvolpato/python-progressbar
我甚至试过了
i=0 for row in cursor: ''' do some work here ''' if i < numrows: pbar.update(i) i=i+1但我仍然得到同样的错误
编辑
我试过Tomasz Jakub Rup回答
pbar = ProgressBar(widgets=[Bar('=', '[', ']'), ' ', Percentage(), ' ', ETA()]) for row in pbar(cursor): ''' do some work here '''我明白了
File "X:\fiddler.py", line 41, in getRows for row in pbar(cursor): File "X:\Anaconda2\lib\site-packages\progressbar\__init__.py", line 180, in __next__ if self.start_time is None: self.start() File "X:\Anaconda2\lib\site-packages\progressbar\__init__.py", line 311, in start self.update(0) File "X:\Anaconda2\lib\site-packages\progressbar\__init__.py", line 283, in update self.fd.write(self._format_line() + '\r') File "X:\Anaconda2\lib\site-packages\progressbar\__init__.py", line 243, in _format_line widgets = ''.join(self._format_widgets()) File "X:\Anaconda2\lib\site-packages\progressbar\__init__.py", line 223, in _format_widgets widget = format_updatable(widget, self) File "X:\Anaconda2\lib\site-packages\progressbar\widgets.py", line 38, in format_updatable if hasattr(updatable, 'update'): return updatable.update(pbar) File "X:\Anaconda2\lib\site-packages\progressbar\widgets.py", line 184, in update return '%3d%%' % pbar.percentage() File "X:\Anaconda2\lib\site-packages\progressbar\__init__.py", line 208, in percentage return self.currval * 100.0 / self.maxval TypeError: unsupported operand type(s) for /: 'float' and 'classobj'知道为什么吗?
My progress bar reaches 100% and then throws the error
from progressbar import Percentage, ProgressBar,Bar,ETA pbar = ProgressBar(widgets=[Bar('=', '[', ']'), ' ', Percentage(), ' ', ETA()]).start() for i,row in enumerate(cursor): ''' do some work here ''' pbar.update(i)here is what i get
Traceback (most recent call last):=========================] 100% ETA: 0:00:00 File "X:\src\dbtest\PymssqlCheck.py", line 27, in <module> fiddler.getRows(condetails, dbdetails, 'compliance', 'doctable', '*', '1000') File "X:\src\utilities\fiddler.py", line 45, in getRows pbar.update(i) File "X:\Anaconda2\lib\site-packages\progressbar\__init__.py", line 271, in update raise ValueError('Value out of range') ValueError: Value out of rangewhy does it reach 100% and then fail? i am using
https://github.com/niltonvolpato/python-progressbar
i even tried
i=0 for row in cursor: ''' do some work here ''' if i < numrows: pbar.update(i) i=i+1but i still get the same error
Edit
i tried Tomasz Jakub Rup answer
pbar = ProgressBar(widgets=[Bar('=', '[', ']'), ' ', Percentage(), ' ', ETA()]) for row in pbar(cursor): ''' do some work here '''and i get
File "X:\fiddler.py", line 41, in getRows for row in pbar(cursor): File "X:\Anaconda2\lib\site-packages\progressbar\__init__.py", line 180, in __next__ if self.start_time is None: self.start() File "X:\Anaconda2\lib\site-packages\progressbar\__init__.py", line 311, in start self.update(0) File "X:\Anaconda2\lib\site-packages\progressbar\__init__.py", line 283, in update self.fd.write(self._format_line() + '\r') File "X:\Anaconda2\lib\site-packages\progressbar\__init__.py", line 243, in _format_line widgets = ''.join(self._format_widgets()) File "X:\Anaconda2\lib\site-packages\progressbar\__init__.py", line 223, in _format_widgets widget = format_updatable(widget, self) File "X:\Anaconda2\lib\site-packages\progressbar\widgets.py", line 38, in format_updatable if hasattr(updatable, 'update'): return updatable.update(pbar) File "X:\Anaconda2\lib\site-packages\progressbar\widgets.py", line 184, in update return '%3d%%' % pbar.percentage() File "X:\Anaconda2\lib\site-packages\progressbar\__init__.py", line 208, in percentage return self.currval * 100.0 / self.maxval TypeError: unsupported operand type(s) for /: 'float' and 'classobj'any idea why?
最满意答案
因为进度条默认为100。 如果有N步,则应指定maxval=N
例如:
from progressbar import Percentage, ProgressBar,Bar,ETA N = 300 pbar = ProgressBar(widgets=[Bar('=', '[', ']'), ' ', Percentage(), ' ', ETA()], maxval=N).start() for i in range(N+1): pbar.update(i)David and Tomasz, both of you guys came pretty close. the solution that worked is
pbar = ProgressBar(widgets=[Bar('>', '[', ']'), ' ', Percentage(), ' ', ETA()],maxval=someMaxValue) for row in pbar(cursor): ''' do some work '''更多推荐
发布评论