Como pesquisar e substituir texto em um arquivo usando Python?

Como faço para pesquisar e substituir texto em um arquivo usando o Python 3?

Aqui está o meu código:

import os
import sys
import fileinput

print ("Text to search for:")
textToSearch = input( "> " ) 

print ("Text to replace it with:")
textToReplace = input( "> " )

print ("File to perform Search-Replace on:")
fileToSearch  = input( "> " )
#fileToSearch = 'D:\dummy1.txt'

tempFile = open( fileToSearch, 'r+' )

for line in fileinput.input( fileToSearch ):
    if textToSearch in line :
        print('Match Found')
    else:
        print('Match Not Found!!')
    tempFile.write( line.replace( textToSearch, textToReplace ) )
tempFile.close()


input( '\n\n Press Enter to exit...' )

Arquivo de entrada:

oi isso é abcd oi isso é abcd

Este é um arquivo de texto falso.

É assim que a pesquisa e substituição funciona abcd

Quando eu procuro e substituo 'ram' por 'abcd' no arquivo de entrada acima, ele funciona como um encanto. Mas quando eu faço isso vice-versa, ou seja, substituindo 'abcd' por 'ram', alguns personagens inúteis são deixados no final.

Substituindo 'abcd' por 'ram'

oi isso é ram ​​oi isso é ram

Este é um arquivo de texto falso.

É assim que a pesquisa e a substituição funcionam