无法将字符串与文件中的行进行比较

时间:2015-10-30 08:05:14

标签: python

我正在尝试检查文件中是否存在某个密钥:

以下是我将密钥存储到文件中的方法:

def cache_key(key):
    with open(file_name, "a") as processed:
            processed.write(key + "\n")

以下是我的比较:

def check_key_exists(key):
    cache_file = open(file_name)
    for line in cache_file:
        if(str(line) == str(key)):
            cache_file.close()
            return True
    cache_file.close()
    return False


def some_func():
    for submission in subs.get_new(limit=75):
        if check_key_exists(submission.id):
            break
        else:
            do_something()

但即使密钥存在于文件中,check_key_exists()也始终返回False。我做错了什么?

2 个答案:

答案 0 :(得分:2)

由于您在行的末尾添加了一个新行字符,因此当您想要将它们与键进行比较时,需要删除这些行:

if (line.strip() == str(key)) :

另请注意,如果key是一个字符串,则无需通过调用str()函数将其转换为字符串。

答案 1 :(得分:2)

您的文件在每个关键字后都有换行符(当然!),我认为这不属于您的key参数。

你可以做到

def check_key_exists(key):
    with open(file_name) as cache_file:
        for line in cache_file:
            if line.strip() == key:
                return True
    return False

请注意,您不需要str() - 您的参数应该已经是字符串。