Image

Image_winnie wrote in Imageru_python

Category:

Как работать удобным образом с текстовыми UTF-16 файлами под виндой?
Если с файлами в utf8/ANSI/ASCII кодировке можно работать так:
f = open("text.txt")

for line in f:
   out_file.write(do_something(line))   
или
lines = f.read().splitlines()

или сразу сунуть результат read() в регулярное выражение (иногда после безхитростной перекодировки из cp1251/UTF-8),
то с двубайтовыми приходится как-то так:

f = open("text.txt", "rb")
text = f.read().decode("utf-16").replace('\r', '')
...
#пишем обратно:
open("out.txt", 'wb').write(text.replace('\n', '\r\n').encode("utf-16"))


Вот такая ручная игра c \r и неожиданные баги с покоцаными концами строк, когда забываешь сделать 'rb'/'wb' - раздражают. Что можете посоветовать?

PS. Обожаю MS за гениальное решение использовать в MS-DOS двадцать лет назад \r\n вместо \n и обратные слеши в путях.