This feels like a very basic question, but I can't find any mention of it elsewhere. I'm a beginning Python user.
When I read in data using DictReader, and then use the dictionary, I'm unable to reference it again. For example, using this code:
#!/usr/bin/python
import csv
import cgi
import cgitb
cgitb.enable()
print "
Title"f = open("blurbs.csv","rb")
blurbs = csv.DictReader(f, delimiter="\t")
for row in blurbs:
print row
for row in blurbs:
print row
f.close()
print ""
Will only print out the contents of blurbs.csv once. The second "for row in blurbs:" does nothing. Is there something I'm missing? How can I make the dictionary into something I can reference repeatedly?
解决方案
You just need to seek the file back to the start:
with open("blurbs.csv","rb") as f:
blurbs = csv.DictReader(f, delimiter="\t")
for row in blurbs:
print row
f.seek(0)
for row in blurbs:
print row
Alternatively you can wrap the dictionary generation into a list of dicts and operate on that:
with open("blurbs.csv","rb") as f:
blurbs = list(csv.DictReader(f, delimiter="\t"))
for row in blurbs:
print row
for row in blurbs:
print row