2010-04-27 3 views
5

Мой Python интерпретатор (v2.6.5) поднимает выше ошибки в следующем codepart:fd.seek() IOError: [Errno 22] Неверный аргумент

fd = open("some_filename", "r") 
fd.seek(-2, os.SEEK_END) #same happens if you exchange the second arg. w/ 2 
data=fd.read(2); 

Последний вызов fd.seek()

Traceback (most recent call last): 
    File "bot.py", line 250, in <module> 
     fd.seek(iterator, os.SEEK_END); 
IOError: [Errno 22] Invalid argument 

Странная вещь заключается в том, что исключение возникает только при выполнении всего моего кода, а не только для конкретной части с открытием файла. Во время выполнения этой части кода открытый файл определенно существует, диск не заполнен, переменная «итератор» содержит правильное значение, как в первом кодовом блоке. Что может быть моей ошибкой?

Заранее спасибо

+1

Возможно ли, что ваш файл пуст? Так что он не может найти путь назад к -2? – mathmike

+0

просто дважды проверил его, файл существует в оба раза, перед открытым концом перед поиском. – Julian

+0

Файл существует И что-то в нем? Файл может существовать, но все равно быть пустым. – mathmike

ответ

4

От lseek(2):

EINVAL

whence is not one of SEEK_SET, SEEK_CUR, SEEK_END; or the resulting file offset would be negative, or beyond the end of a seekable device.

Так дважды проверьте значение iterator.

+0

определенно -2 в первом цикле цикла, который также является точкой, в которой он разбивается ... – Julian

+0

"или результирующее смещение файла будет отрицательным". Каков размер файла? – wRAR

+0

у вас это получилось ... это был ZERO , хотя мне интересно, почему я должен .close() файл сначала перед следующим чтением? – Julian

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