ОК, первая точка: ваш выходной файл настроен на автоматическое кодирование текста, записанного в него, как utf-8
, поэтому не включайте явный вызов метода encode('utf-8')
при передаче аргументов в метод write()
.
Итак, первое, что нужно попробовать, это просто использовать в своем внутреннем цикле следующее:
writer.write(line)
Если это не сработает, то проблема почти наверняка в том, что, как отметили другие, вы не декодируете ваш входной файл должным образом.
Делая дикие предположения и предполагая, что ваши входные файлы закодированы в cp1252
, вы можете попробовать в качестве быстрого теста следующеевнутренний цикл:
for line in codecs.open(infile, 'r', 'cp1252'):
writer.write(line)
Незначительная точка: «wtr» - это бессмысленная строка режима (поскольку доступ на запись подразумевает доступ на чтение).Упростите его до 'wt' или даже до 'w'.