comment remplacer (mettre à jour) le texte dans un fichier ligne par ligne

Je suis en train de remplacer du texte dans un fichier texte par la lecture de chaque ligne, de le tester, puis l'écriture, s'il doit être mis à jour. Je NE veux PAS enregistrer comme un nouveau fichier, que mon script déjà sauvegarde les fichiers et fonctionne sur les sauvegardes.

Voici ce que j'ai jusqu'à présent... je reçois fpath à partir de l'os.marche() et je peux vous garantir que la pathmatch var renvoie correctement:

fpath = os.path.join(thisdir, filename)
with open(fpath, 'r+') as f:
    for line in f.readlines():
        if '<a href="' in line:
            for test in filelist:
                pathmatch = file_match(line, test)
                    if pathmatch is not None: 
                        repstring = filelist[test] + pathmatch
                        print 'old line:', line
                        line = line.replace(test, repstring)
                        print 'new line:', line
                        f.write(line)

Mais ce qui finit par arriver, c'est que je ne reçois que quelques lignes (mis à jour correctement, vous l'esprit, mais il a répété plus haut dans le fichier) corrigé. Je pense que c'est un problème de délimitation de l'étendue, afaict.

*Aussi: je voudrais savoir comment remplacer uniquement le texte lors de la première instance du match, par ex., Je ne veux pas correspondre à l'affichage de texte, seul le sous-jacent href.

source d'informationauteur jml