Python добавляет только уникальные имена вместо дубликатов

Итак, это бот для онлайн-имя под названием chatango. это белый список, который показывает, кому разрешено использовать бота.

Код:

whitelist = []
f = open("users/"+name+".txt", "r") # read-only
print("[INFO]LOADING WHITELIST-LVL-1...")
soundz("info")
time.sleep(1)
for name in os.listdir(path):
 if len(name.strip()[:-4])>0: whitelist.append(name.strip()[:-4])
f.close()

Когда я добавляю еще одного человека в список, используя

 open("users/"+name+".txt", 'w')

а при перезагрузке делает дубликаты в списке

eg 
Before: man1,man2,man3 
[Reloaded] 
After: man1,man2,man3man1,man2,man3,man4

Как мне это сделать

man1,man2,man3,man4 instead of man1,man2,man3man1,man2,man3,man4 

после перезагрузки?

Пожалуйста помоги


person Xei    schedule 19.12.2014    source источник
comment
Краткий ответ: используйте набор вместо списка.   -  person Kevin    schedule 19.12.2014
comment
Вы можете либо проверить, существует ли строка перед добавлением, либо использовать набор, как предлагает Кевин.   -  person EdChum    schedule 19.12.2014


Ответы (2)


Попробуйте вместо этого использовать набор (Python 2 | Python 3). Наборы не сохраняют порядок элементов, а будут содержать только уникальные элементы, поэтому у вас не будет повторяющихся записей.

whitelist = set()
f = open("users/"+name+".txt", "r")
print("[INFO]LOADING WHITELIST-LVL-1...")
soundz("info")
time.sleep(1)
for name in os.listdir(path):
    if len(name.strip()[:-4])>0: whitelist.add(name.strip()[:-4])
f.close()
person David Reeve    schedule 19.12.2014
comment
это сработает? если имя отсутствует в os.listdir(путь): whitelist.remove(name.strip()[:-4]) f.close() - person Xei; 19.12.2014
comment
@Xei Это должно сработать. Проверьте документацию по наборам - person David Reeve; 19.12.2014

Я бы проверил наличие элемента в белом списке и только добавил бы, если бы его там не было:

Итак, в тот момент, когда вы хотите добавить в белый список:

if not name in whitelist:
    whitelist.append(name)
person PythonTester    schedule 19.12.2014