@puk999

Неправильно работает код python?

def add():
    global is_on
    file_null = os.path.getsize("Контакты.txt")
    print(file_null)

    contactName = input("Введите имя добавляемого контакта >>> ")
    contactNumber = input("Введите номер телефона добавляемого контакта >>> ")
    if file_null == 0:
        file.write("{0} : {1}".format(contactName, contactNumber))
    else:
        file.write("\n{0} : {1}".format(contactName, contactNumber))
    print("Контакт {0} создан".format(contactName))

Функция, должна записывать контакт в файл. Переменная file_null хранит всё время то значение, которое у неё было при запуске программы, не зависимо от того, добавлял я контакт или нет. Хотя она должна меняться каждый раз, при запуске add. Как можно решить данную проблему?
  • Вопрос задан
  • 113 просмотров
Решения вопроса 1
@dmshar
Для того, что-бы файл реально записался на диск, его надо закрыть после записи. Без этого все ваши изменения остаются исключительно в буфере. А команды открытия файла я что-то не вижу вообще.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Alien-agent
Функция os.path.getsize() возвращает РАЗМЕР файла, поэтому ваша переменная file_null содержит число, а не ссылку на файл. Для работы с файлом удобно использовать следующую конструкцию:
with open(“Контакты.txt”, “w”) as file:
    file.writeline("{0} : {1}".format(contactName, contactNumber))

Первая строка открывает файл на запись, если он существует, иначе создаётся новый файл(ссылка на файл помещается в переменную file). Следующая строка записывает в файл строку, указанную в скобках. После выхода кода из конструкции with ... as ... файл будет автоматически закрыт(сохранен), а переменные освобождены.
Вам стоит почитать документацию по работе с файлами.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 130 000 ₽
deeplay Новосибирск
от 130 000 ₽
Enjoy PRO Санкт-Петербург
от 140 000 до 180 000 ₽
25 окт. 2020, в 17:09
19999 руб./за проект
25 окт. 2020, в 17:04
3000 руб./за проект
25 окт. 2020, в 16:59
60000 руб./за проект