Самый простой способ - просто сохранить все содержимое файла в памяти до тех пор, пока вы не закончите, запишите заголовок, а затем запишите остальную часть файла.
Если проблема с памятьюи вы не можете безопасно хранить весь файл в памяти, или просто не хотите, тогда вы можете записать большую часть данных CSV во временный файл, затем, когда вы закончите, записать заголовок на основнойфайл и скопируйте данные из временного файла в первичный файл в цикле.
Если вы хотите проявить фантазию, после записи основных данных CSV в первичный файл вы можете перебрать файл изсначала прочитайте в память данные, которые вы собираетесь перезаписать заголовком, затем запишите заголовок поверх этих данных и т. д., прочитайте каждый блок в память, перезапишите его предыдущим, пока не дойдете до концаи добавить последний кусок.Таким образом, вы «вставляете» данные в начале, а я перемещаю остальную часть файла вниз.Я действительно не рекомендовал бы это, поскольку это будет в основном просто добавлять сложность без особой выгоды, если только нет особой причины, по которой вы не можете сделать что-то попроще, например, использование временного файла.