Если бы я написал файл с этим контентом:
#You have been defeated!
#It merely a flesh wound!
We are the knights who say Ni!
We are the knights who say Ni!
We are the knights who say Ni!
Неужели это было бы очень непитоновым делать это с генератором, использующим send? Я никогда не видел, чтобы генераторы использовали это в другом месте.
def write(file, header):
with open(file,'w') as f:
f.write(header)
line = (yield)
while True:
f.write(line)
line = (yield)
return
file='holygrail.txt'
header="#You have been defeated!\n#It merely a flesh wound!\n"
generator = write(file,header)
generator.send(None)
for i in range(3):
generator.send('We are the knights who say Ni!\n')
generator.close()
Я спрашиваю, потому что вышеописанный метод был бы очень полезен для меня, а не для открытия нескольких разных потоков файлов в стек контекстной библиотеки. Мне не пришлось бы использовать модуль contextlib вообще, если я пишу свои файлы следующим образом.
Я никогда не задавал такой вопрос раньше, и я не знаю, принадлежит ли оно в stackoverflow или нет.