символы каретки теряются в результирующей строке при чтении файла в Windows

#python #windows #io

#python #Windows #io

Вопрос:

При чтении текстового файла в Windows с помощью python символы каретки теряются в результирующей строке.

c:/text.txt

 aaarnbbbrncccrnddd
  

код:

 input = open('c:/text.txt')
str = input.read()
import repr
for i,ch in enumerate(str):
    print i,ord(ch),repr.repr(ch)
  

Результат:

 0 97 'a'
1 97 'a'
2 97 'a'
3 10 'n'
4 98 'b'
5 98 'b'
6 98 'b'
7 10 'n'
8 99 'c'
9 99 'c'
10 99 'c'
11 10 'n'
12 100 'd'
13 100 'd'
14 100 'd'
  

вы можете видеть, что все символы каретки потеряны.
Приветствуются любые предложения.

Спасибо.

Ответ №1:

Если вы открываете файл в текстовом режиме, окончания строк Windows rn автоматически заменяются стандартными окончаниями строк n . Чтобы этого не произошло, откройте файл в двоичном режиме:

 input = open('c:/text.txt', 'rb')
  

Комментарии:

1. -1 Нет, он ошибается. В Python 2.7 говорится ValueError: mode string must begin with one of 'r', 'w', 'a' or 'U', not 'b'

2. @John: Спасибо, что указали на это. Мне действительно нужно быть более осторожным!

3. @Jonn: Спасибо. Я почти проигнорировал это.