我有一个Python,每隔 x 秒读取一个CSV文件。
我的工作是:
打开文件,以CSV格式阅读信息,循环每个条目
这是在这个Python文件中完成的:
import csv
import time
import datetime
CSV_PLAN = "./XoceKochPlan.csv"
chargePlanFile = open(CSV_PLAN, 'rt')
def loopMe():
try:
for eachRow in reader:
print (eachRow)
except Exception, ex:
print ("Error processFileing the Thread" + str(ex))
print ("opening file " + str(CSV_PLAN))
now = datetime.datetime.utcnow().strftime("%a %b %d %H %M %S %Z %Y")
print ("Now " + str(now))
reader = csv.reader(chargePlanFile)
loopMe()
输出到目前为止一直很好。
但如果我这样做:
loopMe()
time.sleep(10)
loopMe()
然后文件只打印一次!
问题是为什么?
我错过了什么?什么是内部消耗,或者读者在第一次循环后只是空了?
答案 0 :(得分:1)
在python中,文件io处理程序有一个内部指针。读取文件后,它将位于csv文件的末尾。确保在调用chargePlanFile.close()
函数之前调用loopme()
方法并重新打开文件。或者使用chargePlanFile.seek(0)
重置内部指针的位置。
答案 1 :(得分:0)
当您开始第二个循环时,您的阅读器已经在最后一行。你应该重新分配读者。您应该在开始时在1:aa:bb:c:d0:e1
函数内部执行此操作。
loopMe
如果您保留相同的代码,只需在def loopMe():
reader = csv.reader(chargePlanFile)
try:
for eachRow in reader:
print (eachRow)
except Exception, ex:
print ("Error processFileing the Thread" + str(ex))
的第一行添加reader.seek(0)