В вашем примере файл f
будет ожидать, что строки Unicode будут переданы в f.write()
, и они будут закодированы как объявлено codecs.open
, поэтому код пытается выполнить двойное кодирование. Кроме того, '\u270c'
не является символом, поддерживаемым CP932, поэтому он ни в коем случае не может быть записан в файл CP932.
Предполагая Python 3, для записи строки Unicode text
в конкретное кодирование, используйте:
with open('output.txt','w',encoding='cp932') as f:
f.write(text)
codecs
- более старый модуль и не требуется. В Python 2 io.open
является портированным эквивалентом Python 3 open
и также поддерживается Python 3 для переносимости.