在使用progressbar列印進度條時,發現open(『a.txt』)不能列印進度條
網上demo
import time
import progressbar
bar = progressbar.progressbar(widgets=
[' ['
, progressbar.timer(),
'] '
, progressbar.percentage(),
' ('
, progressbar.eta(),
') ',]
)for i in bar(
range
(1000))
: time.sleep(
0.01
)
完美執行我的test
import time
import progressbar
bar = progressbar.progressbar(widgets=
[' ['
, progressbar.timer(),
'] '
, progressbar.percentage(),
' ('
, progressbar.eta(),
') ',]
)for i in bar(
open
('a.txt'))
: time.sleep(
0.01
)
崩了,而且沒看懂發現python有三種可迭代的東西: 生成器、迭代器和可迭代物件
# 判斷是不是可以迭代,用iterable
# 判斷是不是迭代器,用iterator
from collections import iterable,iterator #我們需要用到的模組 s=
'hello'l=[
1,2,
3]t=(
1,2,
3)d=set1=
f=open
('a.txt'
)# #都是可迭代的
s.__iter__(
)#都有__iter__方法
l.__iter__(
)t.__iter__(
)d.__iter__(
)set1.__iter__(
)f.__iter__(
)#python官方推薦 判斷方式
# 是否是可以迭代的
print
(isinstance
(s,iterable)
)print
(isinstance
(l,iterable)
)print
(isinstance
(t,iterable)
)print
(isinstance
(d,iterable)
)print
(isinstance
(set1,iterable)
)print
(isinstance
(f,iterable)
)# 是否是迭代器,用iterator
print
(isinstance
(s,iterator)
)print
(isinstance
(l,iterator)
)print
(isinstance
(t,iterator)
)print
(isinstance
(d,iterator)
)print
(isinstance
(set1,iterator)
)print
(isinstance
(f,iterator)
)# 有沒有len方法
s.__len__(
)#都有__iter__方法
f.len() 位於**第41行
由輸出知open是乙個可迭代物件,但是不是迭代器,沒有__len__方法,沒法知道總的長度,跑進度條失敗,極有可能就是這點不同。
如果事先把檔案遍歷一遍,求出總行數,也不值得,檔案太大,罷了,就不對open用progressbar了。
python可迭代 python中可迭代物件有哪些
python中的可迭代物件有哪些?python中的可迭代物件有 列表 元組 字典 字串 常結合for迴圈使用 判斷乙個物件是不是可迭代物件 from collections import iterable isinstance list range 100 iterable isinstance s...
python中 可迭代物件
迭代是訪問集合元素的 種 式。迭代器是 個可以記住遍歷的位置的物件。迭代器物件從集合的第 個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。我們已經知道可以對list tuple str等型別的資料使 for in 的迴圈語法從 其中依次拿到資料進 使 我們把這樣的過程稱為遍歷,也...
python中可迭代物件反轉
1 字串反轉 a 839574 reversed a object at 0x00000215caca0d60 for i in reversed a reversed反轉為迭代器物件 print i,end 4 7 5 9 3 8 a 839574 a.reverse 字串不能都就地反轉 trac...