Замена файловой строки inplace - ошибка окна

Я пытаюсь выполнить приведенный здесь ответ:

qaru.site/info/31232/...

У меня есть входной файл zzz.txt, содержащий:

potato potato potato potato potato potato potato potato potato 
potato potato potato
potato potato potato potato potato potato potato potato potato
potato potato potato potato turnip potato
potato potato parsnip potato potato potato

Я пытаюсь заменить слова inplace так:

import fileinput
fileinput.close()
file = open('zzz.txt', "r+")
for line in fileinput.input(file, inplace=1):
    print line.replace('turnip', 'potato')

Я получаю следующую ошибку:

Traceback (most recent call last):
  File "testss.py", line 19, in <module>
    for line in fileinput.input(file, inplace=1):
  File "c:\python27\lib\fileinput.py", line 253, in next
    line = self.readline()
  File "c:\python27\lib\fileinput.py", line 322, in readline
    os.rename(self._filename, self._backupfilename)
WindowsError: [Error 123] The filename, directory name, or volume label syntax i
s incorrect

Я делаю что-то явно неправильно?

Ответ 1

Вместо передачи файлового объекта передайте имя файла (или список имен файлов) на fileinput.input:

fileinput.input('zzz.txt', inplace=1):

Примечание. Не используйте file в качестве имени переменной, file является встроенной функцией.

Ответ 2

Как насчет:

import fileinput
a = 'zzz.txt'

for line in fileinput.input(a, inplace=1):
    print line.replace('turnip', 'potato')