#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: Спасибо. Я почти проигнорировал это.