2012/04/10

Python и перенос строк в файлах

Многим известно, что в разных системах перенос строки в файлах обозначается разным образом. Например, в Windows это CR+LF (0x0d + 0x0a), а в *NIX это просто LF.
Самое интересное, когда нам нужно в винде сформировать файл с переносами строк под линукс или наоборот.
Представим, что мы открыли файл в режиме w, что я делаю обычно на автомате.
Если мы будем писать типа file.write('qwerty\n'), то в файл запишется CR+LF. Аналогично произойдет, если заменить \n на \x0a. А если писать просто file.write('qwerty'), то никакого переноса не будет. Оказывается открывая файл в режиме w при записи строки к ней автоматически добавляется перенос строки в системном формате.

В этом случае нам поможет открытие файла в бинарном режиме, то есть wb. Тогда никакого безобразия с добавлением виндовых переносов строк не происходит и мы можем со спокойной совестью писать file.write('qwerty\n').

1 comment:

  1. Большое спасибо!!!!!!!! ОООчень полезно знать! Вечные проблемы с кодировкой в пайтоне)

    ReplyDelete