我从一个文本文件中读取内容并将其存储在一个列表中(每行作为一个元素)(prizeList)。我也在为winnerList做同样的事情,这是另一个列表
我使用一个zip函数调用emailUser函数,每次都有一个获奖者和一封电子邮件存在于同一个索引中。如果索引中至少有一个元素不存在,循环将停止
调用函数后,从列表中删除该奖品,从文件中删除所有内容,然后将列表内容写回文本文件(实际上是删除该元素)
问题是行prizeList.remove(prize)
或writeTo.write(prizes)
从文本文件中删除了太多内容。在循环中,每次迭代都要删除一个元素(从txt文件中),而不是删除更多的元素
以下是我的尝试:
for prize, winner in zip(prizeList, emailList):
print(f'{prize} goes to {winner}')
emailUserWithPrize(winner, prize, prizeType)
print("Before: ")
print(prizeList)
prizeList.remove(prize)
file.close()
writeTo = open(prizeFile, "w")
prizes = ""
for i in range(len(prizeList)):
prizes = prizeList[i]
writeTo.write(prizes)
print("After:")
print(prizeList)
if len(prizeList) < 1:
print("No more prizes for " + prizeType)
似乎您可能无意中截断了一个列表(或者
prizeList
或者emailList
),因为zip
只在一个输入列表(更一般的迭代器)完成之前进行迭代,as documented。当然,你可以通过打印每个列表的长度来检查,但我猜这就是你问题的根源。
解决这个问题,取决于你实际想做什么,而我无法根据你的代码猜出足够的答案。
祝你好运
由于注释而更新:如果您担心没有正确地读取和/或写入文本文件,则这是另一个问题,应该单独检查和调试
让我们试着解构你的代码。 你在奖品列表和邮件列表的第一项中找到匹配项,对吗?然后从奖品列表中删除每个给定的奖品。然后,如果您还有任何奖品,请将其添加到奖品文件中
输出:
相关问题 更多 >
编程相关推荐