


Почему не работает код? Python 3.11 PyCharm
я пишу код, его смысл в том, что он показывает содержание файла в папке проекта, но если файл пустой, то он пишет просто "Пустота"
Код:
import time
data = open('../forfun/database', encoding='utf8').read()
while True:
maininp = input("printhere >> ")
if maininp == "!data":
while True:
print("Обращаюсь к файлу.");
time.sleep(0.3);
print("Обращаюсь к файлу..");
time.sleep(0.3);
print("Обращаюсь к файлу...");
time.sleep(0.3);
print("Обращаюсь к файлу....");
time.sleep(3.1)
if data == None:
print("Пустота")
else:
print(data)
break
дело в том, что он всегда показывает содержание файла, даже если там пустота
Дополненкто ответит правильно подарю подарок, поставлю лайк и плучший ответ сделаю
Проблема в том, что проверка `if data == None` некорректна. Метод `open().read()` возвращает пустую строку `""`, если файл пуст, а не `None`. Поэтому условие `data == None` никогда не выполняется, и код всегда выводит содержимое файла. Вот исправленный код:
```python
import time
# Читаем файл
data = open('../forfun/database', encoding='utf8').read()
while True:
maininp = input("printhere >> ")
if maininp == "!data":
print("Обращаюсь к файлу.")
time.sleep(0.3)
print("Обращаюсь к файлу..")
time.sleep(0.3)
print("Обращаюсь к файлу...")
time.sleep(0.3)
print("Обращаюсь к файлу....")
time.sleep(3.1)
if data == "": # Проверяем, пустая ли строка
print("Пустота")
else:
print(data)
break
```
### Что изменилось:
1. Заменил `data == None` на `data == ""`, чтобы проверять, пустая ли строка.
2. Убрал вложенный `while True` с `break`, так как он не нужен — код и так выполняется один раз при вводе `!data`.
### Дополнительно:
- **Закрытие файла**: Лучше использовать `with` для работы с файлами, чтобы автоматически закрывать их:
```python
with open('../forfun/database', encoding='utf8') as file:
data = file.read()
```
- **Проверка пути**: Убедись, что путь `../forfun/database` правильный. Если файл не найден, будет ошибка `FileNotFoundError`.
- **Повтор ввода**: Если хочешь, чтобы программа продолжала запрашивать ввод после `!data`, убери `break`.
Если файл всё равно не работает как надо, проверь:
1. Пуст ли файл `database` (открой в текстовом редакторе).
2. Правильный ли путь к файлу относительно скрипта.
Подпишись на мой тг канал если не трудно
https://t.me/workresourse
спроси у чат гпт