gpt4 book ai didi

python - 在第二遍期间无法与对象交互

转载 作者:行者123 更新时间:2023-11-30 23:45:46 24 4
gpt4 key购买 nike

我在编写一些供我个人使用的代码时遇到了一个奇怪的问题。我会让我的代码说话......

def getValues(self, reader):
for row in reader:
#does stuff

return assetName, efficiencyRating

def handleSave(self, assetName, reader):
outputFile = open(self.outFilename, 'w')

for row in reader:
#does other stuff

outputFile.close()
return

def handleCalc(self):
reader = csv.reader(open(self.filename), delimiter = ',', quotechar = '\"')

assetName, efficiencyRating = self.getValues(reader)

self.handleSave(assetName, reader)

这只是代码的一部分(显然)。我遇到的问题是在 handleSave 中尝试循环 reader。它似乎从未进入过循环?我真的不确定发生了什么。 getValues 中的循环按预期运行。

有人可以解释一下发生了什么吗?我做错了什么?我应该怎么做才能解决这个问题?

最佳答案

一旦迭代器迭代一次,就无法再次迭代它。

解决此问题的一种方法是在调用 handleSave 之前,倒带文件并创建新的读取器:

f = open(self.filename)
reader = csv.reader(f, delimiter = ',', quotechar = '"')

assetName, efficiencyRating = self.getValues(reader)

f.seek(0) # rewind file
reader = csv.reader(f, delimiter = ',', quotechar = '"')

self.handleSave(assetName, reader)

或者,您可以将数据读入列表:

rows = list(reader)

然后遍历而不是reader

顺便说一句,Python 中的约定是名称小写,并用下划线分隔,而不是驼峰式大小写。 (例如 get_values 而不是 getValueshandle_save 而不是 handleSave)

关于python - 在第二遍期间无法与对象交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9389372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com