Sustitución de expresiones regulares múltiples en archivos múltiples usando python [cerrado]

Tengo un proyecto en el que necesito aplicar una docena de expresiones regulares a unos 100 archivos usando python. Más de 4 horas de búsqueda en la web de varias combinaciones que incluyen "(fusionar | concatenar | apilar | unir | compilar) varias expresiones regulares en python" y no he encontrado ninguna publicación relacionada con mi necesidad.

Este es un proyecto de tamaño mediano para mí. Hay varios proyectos de expresiones regulares más pequeños que necesito y que solo toman de 5 a 6 patrones de expresiones regulares aplicados en solo una docena de archivos. Si bien estos serán una gran ayuda en mi trabajo, el proyecto Grand-Daddy es una aplicación de un archivo de más de 100 búsquedas, reemplazar cadenas a cualquier archivo nuevo que reciba. (Las convenciones de ortografía en ciertos idiomas no están estandarizadas y la capacidad de procesar archivos rápidamente aumentará la productividad).

Idealmente, las cadenas de expresiones regulares deben ser actualizables por un programador no, pero tal vez fuera del alcance de esta publicación.

Aquí está lo que tengo hasta ahora:

import os, re, sys # Is "sys" necessary?

path = "/Users/mypath/testData"
myfiles = os.listdir(path)

for f in myfiles:

    # split the filename and file extension for use in renaming the output file
    file_name, file_extension = os.path.splitext(f)
    generated_output_file = file_name + "_regex" + file_extension

    # Only process certain types of files.
    if re.search("txt|doc|odt|htm|html")

    # Declare input and output files, open them, and start working on each line.
        input_file = os.path.join(path, f)
        output_file = os.path.join(path, generated_output_file)

        with open(input_file, "r") as fi, open(output_file, "w") as fo:
            for line in fi:

    # I realize that the examples are not regex, but they are in my real data.
    # The important thing, is that each of these is a substitution.
                line = re.sub(r"dog","cat" , line)
                line = re.sub(r"123", "789" , line)
                # Etc.

    # Obviously this doesn't work, because it is only writing the last instance of line.
                fo.write(line)
                fo.close()

Respuestas a la pregunta(1)

Su respuesta a la pregunta