所以我正在编写一个用uuid4生成随机数字和字符的脚本。 这些生成的密钥保存在列表中,该列表将保存在名为“already_used.txt”的文件中。 我的问题是:
如何检查生成的密钥,使其不在已使用的文件中,这样我就可以获得唯一的密钥。
import uuid
checklist_idfile = open('already_used.txt', 'a')
already_used = []
def checklist(string_length=9):
count = 0
while count < 20:
count += 1
checklist_random = str(uuid.uuid4())
checklist_random = checklist_random.replace("-","")
checklist_prefix = 'TEST_'
id_checklist_random = checklist_prefix + checklist_random[0:string_length]
print id_checklist_random
already_used.append(id_checklist_random)
checklist_idfile.write(id_checklist_random)
checklist_idfile.write('\n')
生成的密钥如下所示:TEST_d1c23ba2f 非常感谢你!
答案 0 :(得分:0)
如果我正确理解了这个问题,你需要做类似的事情:
with open("already_used.txt", "r") as used:
already_used = {x.rstrip() for x in used}
if not some_key in already_used:
doing somethig
...
答案 1 :(得分:0)
您可以使用in
关键字检查收藏中的密钥:
if key in collection: do_something()
但要注意,如果收集是list
,则需要很长时间(对于您检查的每个密钥,您需要查看几乎整个列表)
如果您想一次检查更多密钥,请从要比较的集合中设置set(设置为constan,如下所示:
my_set = set(some_collection)
for key in keys:
if key in my_set: do_something()
如果你想从文件中设置,请执行以下操作:(假设每个键都在新行)
key_set = set([x.strip() for x in open("file.txt")])