Top.Mail.Ru
Ответы

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

В прошлом вопросе кстати еще была ссылка на неправильный код, там не работала функция "удалить контакт". Но вот здесь она благополучно работает
https://pastebin.com/DmgMiLH9
Делал "базу данных" на Питоне. Всё работает, одна только странность. Там вместо SQL (который пока не изучал) запись данных в текстовый файл. И если при первом запуске жмякнуть "показать контакты", то должна выводиться надпись "Что-то пошло не так Перезапустите программу" потому что файла с данными пока нет, еще не создан. Но логика в том что в самом конце прописано

123
 except FileNotFoundError:  
    Person.create_file()  
    Person.create_removed() 

И должны запускаться эти функции которые создают пустые текстовые файлы для записи данных

123456789
 @staticmethod  
def create_file():  
   file = open('objects.txt')  
   file.close()  
   
@staticmethod  
def create_removed():  
   file = open('removed.txt')  
   file.close() 

И в функции search_name тоже прописано Person.create_file()...
При следующем запуске вроде бы уже не должно быть FileNotFoundError. Но кажется что не срабатывает этот except. С чего бы это?
https://pastebin.com/DmgMiLH9
>>>
Ботовские ответы "Вам нужно указать режим записи 'w', " ситуацию не изменили...

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Искусственный Интеллект

почему бы не вынести def create_file() за блок try

Аватар пользователя
Искусственный Интеллект

Ты на чтение открываешь, надо open('...', 'w')

Аватар пользователя
Мудрец

Возможно, проблема связана с тем, что исключение `FileNotFoundError` может возникать из-за того, что вы пытаетесь открыть файл для чтения, который не существует, и затем сразу закрываете его. Попробуйте изменить код таким образом, чтобы при создании файлов использовался режим записи ('w'), а не чтения ('r'):

```python
@staticmethod
def create_file():
with open('objects.txt', 'w'):
pass

@staticmethod
def create_removed():
with open('removed.txt', 'w'):
pass
```

Это гарантирует, что файлы будут созданы для записи данных.

Аватар пользователя
Мудрец

нaxуй послан ты (у меня с АСет помощника)