Найти - Пользователи
Полная версия: Не ищет человка
Начало » Python для новичков » Не ищет человка
1
ELVYY
Сделал программу, которые добавляет человека и его номер. В итоге добавлять добавляет, а искать не хочет. В чем проблема?
 import codecs
file = open('D:/python/bd.txt', 'r')
base = {
	file.read()
}
request = input('Введите имя человека, которого хотите найти: ')
try:
	print(base[request])
except TypeError:
	print('Такого человека не существует')
	file.close() 
	answer = input('Желаете добавить контакт? (у - да, n - нет): ')
	if answer == 'y':
		name = input('Введите имя желаемого контакта. ФОРМАТ ВВОДА >>>  Имя контакта:информация ')
		with codecs.open('D:/python/bd.txt', 'a', encoding = 'utf-8') as file:
			file.write('\n' + name)
			print('Человек успешно сохранен')



py.user.next
Надо читать их кириллице (указывать кодировку при открытии на чтение). Ну, и файл открывать только тогда, когда он есть. Это os.path.exists() использовать или исключение проверять.
ELVYY
py.user.next
С кириллицей исправил, а искать не хочет
wi34rd
ELVYY, вы запускаете скрипт не из той же директории в которой лежит текстовый файл. Вы или запускайте из той же, или пропишите в скрипте полный путь к файлу.
ELVYY
wi34rd
Путь указан же. И файл, и скрипт лежат в одной и той же директории.
marvellik
base = {file.read()} посмотри что в этой переменной храниться (явно не словарь )

ELVYY
marvellik
В смысле? Словарь хранится.
Leo:+37544490132
Leonardo DiCaprio:45453454
marvellik
ELVYY
В смысле? Словарь хранится.
то есть в файле bd.txt у тебя так и записано построчно ?
Leo:+37544490132
Leonardo DiCaprio:45453454
ну тогда посмотри что в base храниться
{'Leo:+37544490132\nLeonardo DiCaprio:45453454\n}
это явно не словарь, словарь выглядит так
{'Leo':'+37544490132','Leonardo DiCaprio':'45453454'}
 import codecs
base = {}
with open(r'D:\python\bd.txt', 'r') as file: # или 'bd.txt' если файл рядом с скриптом
    for i in file.read().split('\n'):
        if i : # пропускаем пустые строки( если i не пустая строка то заполняем словарь данными)
            key,val = i.split(':')
            base[key] = val	
request = input('Введите имя человека, которого хотите найти: ')
try:
    print(base[request])
except KeyError:
    print('Такого человека не существует')
    answer = input('Желаете добавить контакт? (у - да, n - нет): ')
    if answer == 'y':
        name,data = input('Введите имя >>>  '), input('информация >>> ')
        with codecs.open(r'D:\python\bd.txt', 'a') as file:
            file.write('{}:{}'.format('\n'+name,data)) 
        print('Человек успешно сохранен')
а вообще лучше через консервацию данных
ELVYY
marvellik
Спасибо большое.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB