我正在尝试检查文件中是否存在某个密钥:
以下是我将密钥存储到文件中的方法:
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
。我做错了什么?
答案 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()
- 您的参数应该已经是字符串。