@Pro100usr

Почему файл открыл с with as и не удаляется?

Здравствуйте, в нескольких источниках указывается что файл в конструкции with... as должен закрываться и не кушать память сразу после окончания, но при попытке удалить файл говорит что файл используется, т.е. он в памяти. После добавления в 9 строке w.close() дает удалиться. Подскажите, пожалуйста, почему так получилось? И второй вопросик небольшой, вроде как для чтения и записи можно было использоваться "wt" вместо "w+" но не работает, хотя вроде как должно было.
import os
from contextlib  import contextmanager

@contextmanager
def way(first,second):
    path = os.path.join(first,"..",second)
    path = open(path, "w+")
    yield path
    w.close()
with way(os.getcwd(),"name.txt") as w:
    w.write("smth\n")
    w.write("smth2\n")
    w.seek(0)
    print("".join(w.readlines()))
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Видать не очень хорошие у вас источники. Оператор with просто оборачивает блок кода контекстным менеджером. Функция open - это контекстный менеджер, который открывает файл при входе в блок with и закрывает при выходе. Могут быть и другие контекстные менеджеры, которые вообще не имеют отношения к работе с файлами. Или выполняют свои обязанности не полностью, как ваш.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы