Форум сайта python.su
Сделал программу, которые добавляет человека и его номер. В итоге добавлять добавляет, а искать не хочет. В чем проблема?
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)
Прикреплённый файлы:
Снимок.PNG (24,7 KБ)
Офлайн
Надо читать их кириллице (указывать кодировку при открытии на чтение). Ну, и файл открывать только тогда, когда он есть. Это os.path.exists() использовать или исключение проверять.
Офлайн
py.user.next
С кириллицей исправил, а искать не хочет
Офлайн
ELVYY, вы запускаете скрипт не из той же директории в которой лежит текстовый файл. Вы или запускайте из той же, или пропишите в скрипте полный путь к файлу.
Офлайн
wi34rd
Путь указан же. И файл, и скрипт лежат в одной и той же директории.
Офлайн
base = {file.read()} посмотри что в этой переменной храниться (явно не словарь )
Офлайн
marvellik
В смысле? Словарь хранится.
Leo:+37544490132
Leonardo DiCaprio:45453454
Офлайн
ELVYYто есть в файле bd.txt у тебя так и записано построчно ?
В смысле? Словарь хранится.
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)
Офлайн
marvellik
Спасибо большое.
Офлайн