Задать вопрос
@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()))
  • Вопрос задан
  • 113 просмотров
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Профессия Python-разработчик + ИИ
    10 месяцев
    Далее
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Видать не очень хорошие у вас источники. Оператор with просто оборачивает блок кода контекстным менеджером. Функция open - это контекстный менеджер, который открывает файл при входе в блок with и закрывает при выходе. Могут быть и другие контекстные менеджеры, которые вообще не имеют отношения к работе с файлами. Или выполняют свои обязанности не полностью, как ваш.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽