我正在尝试制作一个简单的缓存来存储我已经生成的值,因此我不会将重复的值附加到文本文件中。但是,我一直遇到这个问题,无论我似乎尝试什么,我的程序都会不断附加重复的值。

这是我当前的代码,如果有人能指出我正确的方向,将不胜感激:

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/

10-10 14:22