2013-06-05 2 views
2

В то время как при чтении файлов в Python с использованием f = open ("filename.txt") и доступа к данным с f.read(1) и, наконец, нахождение позиции потока usibg f.tell() на каждом шагу; Мы получаем непрерывную нумерацию, начиная с 0 до текущей позиции.проблемы чтения файлов в Python

Проблема, с которой я столкнулся, состоит в том, что я фактически получаю случайное число как f.tell() для некоторых позиций, а затем продолжаю цифры. Для нелогич-, то f.tell() выходы выглядят что-то икэ следующее

0 
1 
2 
3 
133454568679978 
6 
7 
8... 

Любая идея, почему это происходит?

Мой код:

f=open("temp_mcompress.cpp") 
current = ' ' 
    while current != '' : 
    print(f.tell()) 
    current = f.read(1) 

f.close() 

Temp_mcompress.cpp файл:

#include <iostream> 

int main(int a) 
{ 
} 

Выход: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 18446744073709551636 18446744073709551638 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 18446744073709551655 40 41 43 44

+3

Сообщите нам ваш код. – jwodder

+0

Код добавлен ..... –

+0

Ваш код работает для меня. Я получаю 0 ... 41. Что вы пытаетесь сделать? Вы можете получить тот же результат, используя: import os для pos в диапазоне (0, os.path.getsize ("temp_mcompress.cpp") + 1): print pos –

ответ

2

Кажется, я мог бы найти проблему, которая до сих пор может быть применима к Python 3 .x: источник: http://docs.python.org/2.4/lib/bltin-file-objects.html

Телль()

Возврат текущей позиции файла, как ftell STDIO (в).

Примечание: В Windows, tell() может возвращать незаконные значения (после fgets()) при чтении файлов с использованием строк в стиле Unix. Используйте двоичный режим ('rb'), чтобы обойти эту проблему.

Смежные вопросы