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

Я изучаю, как писать потоковые строки в виде файлов в python .

обычно я использую выражение как

myfile = open("test.txt", w) for line in mydata: ... myfile.write(line + '\n') myfile.close() 

Python создает текстовый файл в каталоге и сохраняет значения chunk-by-chunk с интервалами времени.

У меня есть следующие вопросы:

можно ли установить буфер? (например: сохранение данных каждые 20 МБ) можно ли сохранить строку за строкой?

спасибо за предложения, они всегда помогают улучшить

Файловый ввод-вывод в python уже буферизирован. Функция open() позволяет определить, в какой степени буфера буферизации:

Необязательный аргумент buffering указывает размер требуемого буфера файла: 0 означает небуферизованный, 1 означает буферизацию строки, любое другое положительное значение означает использование буфера (приблизительно) этого размера. Отрицательная buffering означает использование системы по умолчанию, которая обычно буферизируется для tty-устройств и полностью буферизируется для других файлов. Если этот параметр опущен, используется системная настройка по умолчанию.

Лично я использую файл в качестве менеджера контекста через оператор with . Как только все утверждения под пакетом with (по крайней мере один уровень углубления глубже) завершены или создается исключение, объект файла закрыт:

 with open("test.txt", 'w', buffering=20*(1024**2)) as myfile: for line in mydata: myfile.write(line + '\n') 

где я установил буфер в 20 МБ в приведенном выше примере.