我正在尝试制作一个简单的缓存来存储我已经生成的值,因此我不会将重复的值附加到文本文件中。但是,我一直遇到这个问题,无论我似乎尝试什么,我的程序都会不断附加重复的值。
这是我当前的代码,如果有人能指出我正确的方向,将不胜感激:
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()
最佳答案
在添加新值之前,您必须跟踪现有值。此外,在您当前的代码中,您针对文件对象检查 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()
关于python - 在附加新值之前检查文本文件中的现有值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28397798/