检查文件中是否已存在生成的密钥

时间:2014-12-18 09:39:00

标签: python

所以我正在编写一个用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 非常感谢你!

2 个答案:

答案 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")])