繁体   English   中英

在追加新值之前检查文本文件中的现有值

[英]Check existing values in text file before appending new values

我正在尝试创建一个存储我已生成的值的简单缓存,因此我不会在文本文件中附加重复值。 但是,我一直有这方面的问题,无论我似乎尝试我的程序继续附加重复值。

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

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()

当您number not in cache调用number not in cache ,您正在尝试查看number是否在open()对象中。 而是首先从cache读取值。

cache是一个文件,而不是字典或列表; 您需要先读取cache中的值,然后才能查看它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM