Короче ты сделал из своей функции сопрограмму. Лучше попытаться реализовать это через доп. параметр "контекст", который будет хранить текущий стейт в том числе файл.
Спасибо огромное! Про контекст я не понял как реализовать, но сделал примерно по описанному Вами принципу: все функции управления файлом создал отдельно, а эта функция лишь передаёт им что делать. И файл существует независимо от функции