Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 7, 2015 14:48:02

J.R.
Зарегистрирован: 2015-07-18
Сообщения: 147
Репутация: +  16  -
Профиль  

Цикл for отрабатывает только один раз. Нужна помощь

.

Отредактировано J.R. (Фев. 27, 2016 16:09:10)

Офлайн

#2 Авг. 7, 2015 14:57:42

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9965
Репутация: +  856  -
Профиль   Отправить e-mail  

Цикл for отрабатывает только один раз. Нужна помощь

Gang
Но смущает постоянно порявляющаяся ошибка.
Делай, как у J.R.

Либо так
fKeys = open('keys.txt')
fCity = open('city.txt')
fResult = open('result.txt','w')
 
with fKeys, fCity, fResult:
    for lineKeys in fKeys:
        lineKeys = lineKeys.rstrip('\n')
        fCity.seek(0)
        for lineCity in fCity:
            lineCity = lineCity.rstrip('\n')
            result = lineKeys + ' ' + lineCity
            fResult.write(result + '\n')



Офлайн

#3 Авг. 7, 2015 14:58:28

Gang
Зарегистрирован: 2015-08-07
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Цикл for отрабатывает только один раз. Нужна помощь

Вы в начале открываете файлы через

with open
А у меня просто
open
Может из-за этого?

Офлайн

#4 Авг. 7, 2015 15:00:44

Gang
Зарегистрирован: 2015-08-07
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Цикл for отрабатывает только один раз. Нужна помощь

py.user.next
Да все работает и з этой ошибкой. Но вопрос, почему она возникает?
Последняя строчка скрипта

    fResult.read()
io.UnsupportedOperation: not readable

Офлайн

#5 Авг. 7, 2015 15:14:15

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9965
Репутация: +  856  -
Профиль   Отправить e-mail  

Цикл for отрабатывает только один раз. Нужна помощь

Gang
Но вопрос, почему она возникает?
Потому что ты неправильно сделал. Ты пытаешься читать файл, открытый на запись.



Отредактировано py.user.next (Авг. 7, 2015 15:20:35)

Офлайн

#6 Авг. 7, 2015 15:21:48

Gang
Зарегистрирован: 2015-08-07
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Цикл for отрабатывает только один раз. Нужна помощь

Ну вродь как разобрался. Теперь все без ошибок

fKeys = open('keys.txt','r')
fCity = open('city.txt','r')
fResult = open('result.txt','w')
for lineKeys in fKeys:
    lineKeys = lineKeys.rstrip('\n')
    fCity.seek(0)
    for lineCity in fCity:
        lineCity = lineCity.rstrip('\n')
        result = lineKeys+' '+lineCity
        fResult.write(result + '\n')
with fKeys, fCity, fResult:
    fKeys.close()
    fCity.close()
    fResult.close()

Офлайн

#7 Авг. 7, 2015 15:24:01

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9965
Репутация: +  856  -
Профиль   Отправить e-mail  

Цикл for отрабатывает только один раз. Нужна помощь

Gang
Ну вродь как разобрался. Теперь все без ошибок
Вот это скопируй себе.

Gang
with fKeys, fCity, fResult:
    fKeys.close()
    fCity.close()
    fResult.close()
with уже выполняется close'ы неявно, он для того и нужен, чтобы их выполнять.



Отредактировано py.user.next (Авг. 7, 2015 15:24:13)

Офлайн

#8 Авг. 7, 2015 16:03:43

Gang
Зарегистрирован: 2015-08-07
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Цикл for отрабатывает только один раз. Нужна помощь

py.user.next
Ага понял

Офлайн

#9 Авг. 7, 2015 16:06:31

Gang
Зарегистрирован: 2015-08-07
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Цикл for отрабатывает только один раз. Нужна помощь

Еще маленькая проблемка возникла. Хочу первую букву в результирующей строке привести в верхний регистр. Использую

result.capitalize()

Общий код сейчас такой
fKeys = open('keys.txt','r')
fCity = open('city.txt','r')
fResult = open('result.txt','w')
with fKeys, fCity, fResult:
    for lineKeys in fKeys:
        lineKeys = lineKeys.rstrip('\n')
        fCity.seek(0)
        for lineCity in fCity:
            lineCity = lineCity.rstrip('\n')
            result = lineKeys+' '+lineCity
            result.capitalize()
            fResult.write(result + '\n')
Но чето не работает
 result.capitalize()
Где я опять протупил?

Офлайн

#10 Авг. 7, 2015 16:38:31

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9965
Репутация: +  856  -
Профиль   Отправить e-mail  

Цикл for отрабатывает только один раз. Нужна помощь

result = (lineKeys + ' ' + lineCity).capitalize()

Gang
Где я опять протупил?
Ты её как бы в воздухе привёл, а потом откинул. (Как с rstrip() нужно делать.)



Отредактировано py.user.next (Авг. 7, 2015 16:40:19)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version