CSV文件PAR中的奇怪循环

2024-10-01 17:25:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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()

那么文件只打印一次!你知道吗

问题是为什么?

我错过了什么?什么在内部被消耗,或者读卡器在第一个循环之后是空的?你知道吗


Tags: 文件csvimportdatetimetimenowreaderex
2条回答

在python中,文件io处理程序有一个内部指针。读取文件后,它将位于csv文件的末尾。确保调用chargePlanFile.close()方法并在调用loopme()函数之前重新打开文件。或者使用chargePlanFile.seek(0)重置内部指针的位置。你知道吗

当你开始第二个循环时,你的阅读器已经在最后一行了。你应该重新分配读卡器。一开始应该在loopMe函数中执行。你知道吗

def loopMe():
    reader = csv.reader(chargePlanFile)
    try:
        for eachRow in reader:
            print (eachRow)
    except Exception, ex:
        print ("Error processFileing the Thread" + str(ex))

如果要保留相同的代码,只需在loopMe的第一行添加reader.seek(0)

相关问题 更多 >

    热门问题