Проще говоря: снова откройте файл:
with open("text.txt","r") as file:
#read some line
with open(file.name,"a") as file:
file.write("texte") # now it works
Теперь вы упоминаете в комментарии, что:
я передаю этот дескриптор файла в качестве параметра в вызове функции, поэтомуимя файла внутри функции неизвестно, поэтому повторное открытие файла тем же методом внутри функции невозможно, поэтому я спрашиваю, как открыть дескриптор файла
Теперь этоКак правило, функция не должна закрывать / открывать ресурс, который был предоставлен вызывающей стороной, например:
def foo(fname):
with open(fname) a file:
bar(file)
def bar(file):
file.close()
with open(file.name, "a") as f2:
f2.write("...")
- плохая практика - здесь bar
НЕ ДОЛЖЕН закрывать файл, только используйте его - удаление файла является обязанностью foo
(или того, кто называл bar
). Так что если вам нужен такой шаблон, значит, что-то не так с вашим дизайном, и вам лучше будет исправитьспроектируйте сначала.
Обратите внимание, что вы можете открыть файл для добавления, не закрывая первый дескриптор:
def bar(file):
with open(file.name, "a") as f2:
f2.write("...")
, но это все равно может испортить ожидания вызывающего абонента.