Pesquise e substitua uma linha em um arquivo em Python

Quero fazer um loop sobre o conteúdo de um arquivo de texto, fazer uma pesquisa e substituir em algumas linhas e escrever o resultado novamente no arquivo. Eu poderia primeiro carregar o arquivo inteiro na memória e depois escrevê-lo novamente, mas essa provavelmente não é a melhor maneira de fazê-lo.

Qual é a melhor maneira de fazer isso, dentro do código a seguir?

f = open(file)
for line in f:
    if line.contains('foo'):
        newline = line.replace('foo', 'bar')
        # how to write this newline back to the file

questionAnswers(13)

yourAnswerToTheQuestion