Странное поведение TextIOWrapper.tell () с Python 3.6.9 в контексте 0D / 0A - PullRequest
1 голос
/ 28 марта 2020

ОКРУЖАЮЩАЯ СРЕДА :

Intel/88-Ubuntu SMP Tue Feb 11 20:11:34 UTC 2020
Python 3.6.9

ДАНА :

Крошечная программа, хранящаяся в test.py, которая показывает введите положение и введите код символа для последовательного чтения отдельных символов.

fh  = open("tmp.txt", "r")
while 1 + 1 == 2:
    tmp = fh.read(1)
    if not tmp: break
    print(fh.tell(), "%x" % ord(tmp))

Заполните tmp.txt в bash, чтобы содержать некоторые данные

echo -e "\x41\x42\x3b\x0d\x0a\x0d\x0a" > tmp.txt

OUTPUT :

Запуск python3 test.py доставляет

1 41
2 42
18446744073709551620 3b
5 a
7 a
8 a

ВОПРОС :

Откуда берется чрезмерно высокое значение 18446744073709551620 для fh.tell() родом из? Интересно, что этого не происходит в следующих случаях.

echo -e "\x41\x42\x3b\x0d\x0a" > tmp.txt     # only one 0x0d/0x0a
echo -e "\x42\x3b\x0d\x0a\x0d\x0a" > tmp.txt # no 'A' at the beginning of the file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...