Форум сайта python.su
0
Пишу код;
f = open('Имя_файла')
x = 0
num_char_f = len(f.read())
str_f = f.read()
char_x = str_f{x} - Поставил фигурные скобки, потому что квадратные форум стирает.
При трансляции пишет:
IndexError: string index out of range
Но когда стираю строку “num_char_f = len(f.read())”, все работает.
Хоть убей, не пойму почему так. Помогите пожалуйста новичку, не оставайтесь равнодушными)
Офлайн
31
f = open('1.py','r') x = 0 str_f = f.read() f.close() num_char_f = len(str_f) print num_char_f print str_f print str_f[x]
Отредактировано sanodin (Апрель 9, 2014 18:03:38)
Офлайн
33
>>> f = open("mysql.opt") >>> f.tell() 0 >>> s = f.read() >>> s "# Options file generated by MySQL client\n\n..." # rest of file here >>> f.tell() 316 >>> s2 = f.read() >>> s2 '' >>> s[5] 't' >>> s2[5] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: string index out of range
Отредактировано Lexander (Апрель 9, 2014 18:00:44)
Офлайн
Та объясните вы нормально новичку. Вот допустим текст состоит из 1-го символа. Его len() равна 1, но индекс этого символа равен 0. Т.е. отнимайте единицу от длины, ибо индекс начинается с нуля, а не с единицы
Офлайн
31
У него пустая строка была
Офлайн
блин. Не успел удалить, уже ответили, по стакану написал, не разобрался.
Офлайн
0
Правильно ли я понял?
Нельзя писать:
num_char_f = len(f.read())
str_f = f.read()
Нужно:
str_f = f.read()
num_char_f = len(str_f)
…
И еще, нельзя присвоить переменной то что считалось из файла, если уже есть переменная у которой есть такое значение? Пример кода:
f.open('Имя_файла')
str_1 = f.read()
# Первая переменная
str_2 = f.read()
# Вторая переменная которая будет ругаться
Нужно так:
str_1 = f.read()
str_2 = str_1
Отредактировано nixis (Апрель 9, 2014 20:17:04)
Офлайн
31
отдельно можно
Офлайн
0
Спасибо большое. Вроде дошло)
Век живи, век учись)
Офлайн
33
nixis
Если вы действительно хотите научиться, возьмите код, который я привел выше и напротив каждой строчки напишите смысл происходящего, как вы это понимаете. Т.е., что за операция выполняется, какой результат этой операции и почему.
Я готов разобрать его с вами, если у вас будет такое желание.
Офлайн