Форум сайта python.su
0
Lexander
Всегда готов!
>>> f = open("mysql.opt") # Присваивает значение переменной открытый файл. >>> f.tell() # С методом _.tell не сталкивался, но думаю что он считывает количество символов с строки(тот же len(), но как метод) 0 # Ничего не считало, потому что чтобы что-то считать нужно не только открыть файл, но и прочитать его, пример - str = f.read() >>> s = f.read() # Чтение файла и присвоение в переменную s >>> s # Должно вывести на консоль, то что считалось с файла "# Options file generated by MySQL client\n\n..." # rest of file here >>> f.tell() 316 # Вывело количество символов, потому что компьютер уже считал с файла командой f.read() >>> s2 = f.read() # Присвоение переменной s2 то что вычитает из файла. Тут я мешкаюсь. Не знаю почему нельзя второй переменной, на прямую, через команду s2 = f.read(), присвоить считывание. Может f.read() должен быть, грубо привязан только к одной переменной. >>> s2 '' >>> s[5] # Вывести пятый символ в списке. 't' >>> s2[5] # Ошибка. Думаю возможно еще что чтение закончилось и остановилось в конце файла, при инициализации первой переменной (s), и после этого нечего уже записывать. Вот и s2 пустая. Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: string index out of range
Офлайн
221
nixis
эх…ну не знаете вы что такое tell - ну какой блин смысл гадать, когда рядом есть справка? tell() у файлового объекта возвращает позицию “курсора” в файле. Что бы более понятно было рассмотрите вариант того что вы открыли текстовой файл в текстовом редакторе, там есть курсор который вы можете поставить в произвольное положение, так вот tell() возвращает количество символов (а точнее байт) считая от начала файла.
Раз вы вызвали read() значит вы считали содержимое всего файла (считать содержимое файла до символа конца файла), и соответственно “курсор” будет находиться в конце файла. При еще одной попытке read() будет попытка считать файл, курсор которого уже находится в конце, а раз считывать нечего, то будет возвращена пустая строка.
Офлайн
0
JOHN_16
Извиняюсь за мое невежество)
Т.е. tell() сначало передвигает курсор в начало файла, а уж затем считывает. А len() считывает с положения на котором в данный момент находиться курсор?
P.s. В справочники и документацию не лезу. Когда-то рылся, но ничего не понял. Наверно не вырос до них(
Отредактировано nixis (Апрель 10, 2014 00:06:41)
Офлайн
33
nixisЭто поправимо. Совместными усилиями мыс делаем из вас настоящего программиста и это не зависит от языка
Извиняюсь за мое невежество

Офлайн
0
Lexander
Это поправимо. Совместными усилиями мыс делаем из вас настоящего программиста и это не зависит от языкаИскренне на это надеюсь)
Вы, кстати, какую версию питона используете?3.3.2, О.С. Ubuntu
Поэтому, если вы прочитали весь файл, то…?Указатель находиться перед последним прочитаным символом, т.е. в конце файла?
Второй наводящий вопрос: где находится указатель файла при повторном вызове метода read() ?Там же где и был - в конце?

Вы документацию то почитайте.Попробую, но она на английском. Прийдеться с гугл переводчиком сидеть…
https://docs.python.org/3/library/io.html
Это будет эффективнее, чем гадать что значит тот или другой метод или функция.
И теперь с новыми знаниями попробуйте снова описать код.

Офлайн
33
nixisДа, в конце файла.
Указатель находиться перед последним прочитаным символом, т.е. в конце файла?
nixisТочно.
Там же где и был - в конце?
nixisТут уж придется постараться. Без базового английского в программировании никак.
Попробую, но она на английском. Придется с гугл переводчиком сидеть
Офлайн