Я использую Python 3.3.0, на Windows 64bit.
У меня есть текстовый файл, как показано ниже: (см. нижнюю часть ссылки для загрузки в mediafire)
hello
-data1:blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
-data2:blah blah blah blah blah blah blah blah blah blah blah
-data3: Empty
-data4: Empty
Я пытаюсь перемещаться по файлу, и поэтому я использую .tell()
, чтобы выяснить, какова моя позиция. Однако при чтении строк файла, как показано ниже, я получаю очень странный результат:
f=open("test.txt")
while True:
a = f.readline()
print("{} {}".format(repr(a),f.tell()))
if a == "":
break
Результат:
'hello\n' 7
'\n' 9
'-data1:blah blah blah blah blah blah blah blah blah blah blah blah blah blah bl
ah blah\n' 18446744073709551714
'\n' 99
'\n' 101
'-data2:blah blah blah blah blah blah blah blah blah blah blah\n' 164
'-data3: Empty\n' 179
'\n' 181
'-data4: Empty' 194
'' 194
Что с 18446744073709551714 для 3-й линии? Хотя это выглядит как невозможное значение, f.seek(18446744073709551714)
является приемлемым значением, которое, по-видимому, приводит меня к концу третьей строки. Хотя, я не могу понять, почему.
EDIT:
Открытие в двоичном режиме не вызывает проблем с tell()
:
f=open("test.txt","rb")
while True:
a = f.readline()
print("{} {}".format(repr(a),f.tell()))
if a == b"":
break
Результат:
b'hello\r\n' 7
b'\r\n' 9
b'-data1:blah blah blah blah blah blah blah blah blah blah blah blah blah blah b
lah blah\r\n' 97
b'\r\n' 99
b'\r\n' 101
b'-data2:blah blah blah blah blah blah blah blah blah blah blah\r\n' 164
b'-data3: Empty\r\n' 179
b'\r\n' 181
b'-data4: Empty' 194
b'' 194
Текстовый файл test.txt можно загрузить здесь, всего чуть-чуть 194 байта: http://www.mediafire.com/?1wm4lujb2j48y23