我希望能够在此脚本中插入一种进度条,因为它需要一段时间才能加载。
csvReader = csv.reader(open(fo, 'rb'), delimiter=',')
csvList = list(csvReader)
#print len(csvList)
#return
count = 1
for row in csvList[:50000]:
if count != 1:
cur.execute(sql2, [row[0], row[2], row[9], row[11], row[18], row[25], row[27], row[15], row[22]])
count +=1
cnn.close()
答案 0 :(得分:1)
你正在将csv数据加载到内存中 - 所以你有它的长度......
# untested
from itertools import count
rows = len(csvList)
pctn = rows // 100
perc = count()
for rowno, row in enumerate(csvList):
if rowno % pctn == 0:
print '{}%'.format(next(perc))
另外,可能值得研究让Python重新格式化数据,并使用数据库的导入/批量上传机制。
答案 1 :(得分:0)
我希望能够在此脚本中插入一种进度条,因为它需要一段时间来加载
python确实有一个进度条包http://code.google.com/p/python-progressbar/
一旦安装,就可以使用它。
from progressbar import Bar, ETA, Percentage, ProgressBar, RotatingMarker
csvReader = csv.reader(open(fo, 'rb'), delimiter=',')
csvList = list(csvReader)
#print len(csvList)
#return
count = 1
widgets = ['Parsing CSV: ', Percentage(), ' ', Bar(marker = RotatingMarker()), ' ', ETA()]
pbar = ProgressBar(widgets = widgets, maxval = 50000).start()
for index, row in enumerate(csvList[:50000]):
if count != 1:
cur.execute(sql2, [row[0], row[2], row[9], row[11], row[18], row[25], row[27], row[15], row[22]])
count +=1
pbar.update(index)
pbar.finish()
cnn.close()
您可以通过玩maxval
和update
来更改更新费率。