Top.Mail.Ru
Ответы
Аватар пользователя
2мес
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+3

Почему не работает код? Python 3.11 PyCharm

я пишу код, его смысл в том, что он показывает содержание файла в папке проекта, но если файл пустой, то он пишет просто "Пустота"
Код:

1234567891011121314151617181920
 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 

дело в том, что он всегда показывает содержание файла, даже если там пустота

Дополнен

кто ответит правильно подарю подарок, поставлю лайк и плучший ответ сделаю

По дате
По рейтингу
Аватар пользователя
Новичок
2мес

Проблема в том, что проверка `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

Аватар пользователя
Знаток
2мес

спроси у чат гпт