Python: cómo cambiar el nombre por lotes de mayúsculas y minúsculas a minúsculas con guiones bajos

He escrito un poco de mi primer script de Python significativo. Acabo de terminar de leer PEP 8, y aprendí que se prefiere lower_case_with_underscores para los nombres de variables de instancia. He estado usando mixedCase para nombres de variables a lo largo, y me gustaría que mi código fuera más Pythonic cambiando esos a lower_case_with_underscores si así es como hacemos las cosas por aquí.

Probablemente podría escribir algún script que busque mixedCase e intente reemplazarlo inteligentemente, pero antes de potencialmente reinventar la rueda, mi pregunta es si ya existe una solución para eso, ya sea dentro de un editor con conocimiento de Python o como una aplicación independiente; o si hay otro enfoque que realizaría la tarea de convertir todos los nombres de variables mixedCase a lower_case_with_underscores. He buscado un poco en busca de una solución, pero no encontré nada. Cualquier técnica que específicamente produzca este resultado sería apreciada.

Pude lograr lo que quería usando GNU sed:

sed -i -e :loop -re 's/(^|[^A-Za-z_])([a-z0-9_]+)([AZ])([A-Za-z0-9_]*)'\ '([^A-Za-z0-9_]|$)/\1\2_\l\3\4\5/' -e 't loop' myFile.py 

Encuentra todas las instancias de mixedCase, pero no CapitalWords, por lo que los nombres de las clases se dejan intactos, y los reemplaza por lower_case_with_underscores; por ejemplo, myVariable se convierte en my_variable, pero MyClass sigue siendo MyClass.

(En una nota no relacionada, ahora que lo he hecho, creo que prefiero la apariencia de mixedCase en lugar de lower_case_with_underscores. La aparición de tantos guiones bajos en todo mi código es extraña. Pero haré las cosas a la manera de Python y veré si Me acostumbro a ello, especialmente si pretendo que otros vean o trabajen con mi código, o tal vez lo haga de la manera que me gusta y ahora tengo una forma sencilla de convertirlo a PEP 8. si tengo la intención de hacer el código público)