цикл python while не останавливается после выполнения условия? - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь в конечном итоге создать функцию, которая извлекает коды скидок из файла, отправляет их пользователю, а затем удаляет их из послесловия файла. Я пытаюсь использовать цикл while для достижения этой цели, но он не останавливается при выполнении условия. Вместо этого он каждый раз читает в конец файла, а значение len(count) всегда равно количеству строк в файле. Кто-нибудь может сказать мне, что мне здесь не хватает?

count = []
with open('codes.txt', 'w') as f:
    while len(count) < 10:
        #print(len(count))
        for line in lines:
            if '10OFF' in line:
                count.append(line)
                line = line.replace(line, "USED\n")
                #f.write('USED\n')
                #line = line + ' USED'

                f.write(line)
                print(line)
            #elif '10OFF' not in line:
                #print('not in line')
    else:
        print('all done')
        print(len(count))

1 Ответ

0 голосов
/ 01 ноября 2018

Проверка должна в цикле. попробуй это.

count = []
with open('codes.txt', 'w') as f:
    #print(len(count))
    for line in f.readlines():
        if '10OFF' in line:
            count.append(line)
            line = line.replace(line, "USED\n")
            #f.write('USED\n')
            #line = line + ' USED'

            f.write(line)
            print(line)
        if len(count) >= 10:
            break

print('all done')
print(len(count))

Ответ на комментарий - ваши строки были удалены после 10. Откройте другой файл для вывода.

with open('codes.txt', 'r') as f:
    with open('codes_output.txt', 'w') as fo:
         ...
         fo.write(line)
         ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...