If you wanted to replay a macro across multiple files, you can use (you guessed it) arglist. Arglist allows you to execute normal mode commands with :normal command. For instance, you could run a macro from register a, as follows:
:arg **/* .py:argdo execute ":normal @a" | update
Here, :normal @a will execute macro a in normal mode, and update will save the buffer contents. You'll probably want to use arglist with recursive macros.