Idealmente o programa não deveria perder funcionalidade. Você poderia melhorar seus câmbios assim:
abstrair o acesso ao arquivo para permitir que seja qualquer dos dois formatos (com as dependências pro XLS opcionais).
evitar abrir e fechar o arquivo, abrir só uma vez; depois é só escrever cada linha e fazer csvfile.flush().
a mensagem do erro relativo a permissão do arquivo está errado, normalmente se o arquivo estiver aberto não afeta, exceto no Windows talvez, mas isso não é um comportamento padrão.
separar cada câmbio num commit com a mensagem explicando o conteúdo, estruturado, sem misturar coisas
Meu pull request basicamente refatorou o sistema
As mudanças principais foram: