2013-09-08 2 views
0

Я создаю небольшую систему, в которой пользователь может войти с именем пользователя и паролем. Затем код будет проверять текстовый файл, содержащий имя пользователя и пароль в той же строке.Как добавить файлы в словарь?

Я понятия не имею, как это сделать. Почему так сложно создать простую систему входа, основанную на текстовом файле с деталями в нем? Я считаю, что моя философия ошибочна, а не реальный код.

Я использовал различные коды вроде следующего:

with open('users/users.txt') as f: 
    {int(k): v for line in f for (k, v) in (line.strip().split(None, 1),)} 

которые приходят к никакой пользы. Что я делаю не так?

+0

Ну, первый вопрос приходит на ум - что вы ожидали от этой строки кода, в отличие от того, что она на самом деле делает или не делает? –

ответ

0

Я предполагаю, что у вас есть текстовый файл, который выложил вот так:

username1 password1 
username2 password2 
... 

Из того, что я понял из вашего вопроса, вы хотите, чтобы разобрать этот файл и сохранить результаты в словаре (т.е. имя пользователя ключевые карты для значения пароля). Такие материалы более правильно хранятся в базе данных (например, SQLite встроен в Python), поэтому вам обязательно нужно изучить знания о базах данных, а не использовать простой текстовый файл для хранения данных, особенно учетных записей пользователей.

Кроме того, вы должны подумать о том, как хранить конфиденциальную информацию, такую ​​как пароли, используя такие методы, как хеширование, но об этом вы можете подумать, когда захотите сделать следующий шаг (я полагаю, что это небольшой потому что такие концепции, как базы данных и хеширование, могут выходить за рамки вашей текущей области, но они абсолютно заслуживают изучения).

Что касается вашего вопроса, вы могли бы думать о делать что-то вроде следующего:

accounts = dict() 

with open('users.txt') as f: 
    for account in f: 
     (usr, pwd) = account.strip().split() 
     accounts[usr] = pwd 

print(accounts) 

Я думаю, что код ясности более важно, чем держать все это в одной строке! Код, который я показал, не является исчерпывающим, скорее как руководство. Как я уже говорил, я не рекомендую вам идти по этому маршруту, поэтому обязательно изучите базы данных и правильные методы хранения паролей!

Что вы могли бы сделать в то же время, чтобы обеспечить некоторую защиту, это хранить пароль как хэш (то есть pwd будет хешем). Затем, когда пользователь передает пароль системе, вы можете рассчитать хэш и проверить, равны ли хеши. Это было бы лучше, чем использовать простые текстовые пароли. Python имеет встроенный модуль для хэширования, называемый hashlib. Я не специалист по хешированию, но это будет достойная отправная точка.

Смежные вопросы