wielokrotne podstawianie wyrażeń regularnych w wielu plikach za pomocą pythona [zamknięte]

Mam jeden projekt, w którym muszę zastosować kilkanaście wyrażeń regularnych do około 100 plików przy użyciu Pythona. Ponad 4 godziny przeszukiwania sieci w poszukiwaniu różnych kombinacji, w tym „(scalanie | łączenie | stos | dołącz | kompiluj) wiele wyrażeń regularnych w pythonie” i nie znalazłem żadnych postów dotyczących mojej potrzeby.

To dla mnie średniej wielkości projekt. Jest kilka mniejszych projektów wyrażeń regularnych, które wymagają tylko 5-6 wzorców wyrażeń regularnych zastosowanych tylko na kilkunastu plikach. Chociaż będą one świetną pomocą w mojej pracy, projekt grand-daddy polega na zastosowaniu pliku 100+ wyszukiwania, zamieniając ciągi na każdy nowy plik, który otrzymuję. (Konwencje pisowni w niektórych językach nie są znormalizowane, a możliwość szybkiego przetwarzania plików zwiększy wydajność).

Idealnie, ciągi wyrażeń regularnych muszą być możliwe do aktualizacji przez programistę, ale może to być poza zakresem tego posta.

Oto, co mam do tej pory:

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()

questionAnswers(1)

yourAnswerToTheQuestion