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').

2 comments:

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

    ReplyDelete
  2. Я не мог поверить, что существует настоящий онлайн-кредитор, который может быть таким добрым и честным, как Бенджамин Ли, который предоставил мне ссуду в 2 миллиона евро для выполнения моего проекта, который так долго ждал своего исполнения, но с С помощью офицера Бенджамина все было легко для меня. Я скажу вам связаться с кредитным офицером Бенджамином Ли по адресу 247officedept@gmail.com

    ReplyDelete