Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 25, 2017 13:54:08

ELVYY
Зарегистрирован: 2017-02-25
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Не ищет человка

Сделал программу, которые добавляет человека и его номер. В итоге добавлять добавляет, а искать не хочет. В чем проблема?

 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('Человек успешно сохранен')



Отредактировано ELVYY (Фев. 25, 2017 15:36:44)

Прикреплённый файлы:
attachment Снимок.PNG (24,7 KБ)

Офлайн

#2 Фев. 25, 2017 14:20:18

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

Не ищет человка

Надо читать их кириллице (указывать кодировку при открытии на чтение). Ну, и файл открывать только тогда, когда он есть. Это os.path.exists() использовать или исключение проверять.



Офлайн

#3 Фев. 25, 2017 14:21:41

ELVYY
Зарегистрирован: 2017-02-25
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Не ищет человка

py.user.next
С кириллицей исправил, а искать не хочет

Офлайн

#4 Фев. 25, 2017 14:36:23

wi34rd
Зарегистрирован: 2016-10-08
Сообщения: 89
Репутация: +  2  -
Профиль   Отправить e-mail  

Не ищет человка

ELVYY, вы запускаете скрипт не из той же директории в которой лежит текстовый файл. Вы или запускайте из той же, или пропишите в скрипте полный путь к файлу.

Офлайн

#5 Фев. 25, 2017 14:44:58

ELVYY
Зарегистрирован: 2017-02-25
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Не ищет человка

wi34rd
Путь указан же. И файл, и скрипт лежат в одной и той же директории.

Офлайн

#6 Фев. 25, 2017 14:47:51

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Не ищет человка

base = {file.read()} посмотри что в этой переменной храниться (явно не словарь )

Офлайн

#7 Фев. 25, 2017 15:23:29

ELVYY
Зарегистрирован: 2017-02-25
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Не ищет человка

marvellik
В смысле? Словарь хранится.
Leo:+37544490132
Leonardo DiCaprio:45453454

Офлайн

#8 Фев. 25, 2017 18:44:19

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Не ищет человка

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('Человек успешно сохранен')
а вообще лучше через консервацию данных

Отредактировано marvellik (Фев. 25, 2017 19:13:34)

Офлайн

#9 Фев. 25, 2017 21:10:14

ELVYY
Зарегистрирован: 2017-02-25
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Не ищет человка

marvellik
Спасибо большое.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version