我尝试创建一个简单的缓存来存储我已经生成的值,因此我不会在文本文件中附加重复值。但是,我一直有这方面的问题,无论我怎样尝试我的程序都会附加重复值。
这是我目前的代码,如果有人能指出我正确的方向,我们将不胜感激:
import random
def test():
cache = open('cache.txt','a+')
for x in range(10):
number = random.randint(1,20)
if number not in cache:
cache.write(str(number) + '\n')
print("Finished.")
test()
答案 0 :(得分:4)
在添加新值之前,您必须跟踪现有值。此外,在当前代码中,您将针对文件对象检查in
成员资格测试,该测试无效。
因此,首先将现有值读入变量,然后添加新值,检查它们是否已存在。同时将新生成的无重复随机值添加到现有值中。
import random
def test():
with open('cache.txt','r') as cache:
existing = [l.rstrip("\n") for l in cache.readlines()]
with open('cache.txt', 'a+') as cache:
for x in range(10):
number = str(random.randint(1,20))
if number not in existing:
existing.append(number)
cache.write(number + '\n')
print("Finished.")
test()
答案 1 :(得分:2)
当您致电number not in cache
时,您正试图查看number
对象中是否有open()
。而是首先从cache
读取值。
答案 2 :(得分:1)
cache
是一个文件,而不是字典或列表;您需要先阅读cache
中的值,然后才能查看它们。