Начать обработку файла со строки с определенной строкой в ​​Python - PullRequest
0 голосов
/ 22 февраля 2019

Я пишу скрипт на Python (в частности, 3.x) для чтения имен из файла и их обработки.Предположим, у меня есть следующий текст в файле names.txt, который выглядит примерно так:

Rebecca Rivera
Ralph   Turner
Katherine   Green
Douglas Perry
Kenneth Carter
David   King
Debra   Johnson
Bruce   Ross
Victor  Lewis
Louis   Young

Сценарий может произойти сбой в некоторой случайной точке в файле после того, как он начинает читать из верхней части файла внижний ( Примечание: это не проблема) .Я могу точно знать, под каким именем произошел сбой сценария, и сохранить его, но независимо от того, хотел бы повторить мой сценарий через каждое имя.Следовательно, если сценарий проходит через весь файл, проблема не возникает и имя не сохраняется, но если это не EOF, имя, которое обрабатывалось при сбое сценария, должно быть сохранено.

Функция, которую я использую для обработки имен, вызывается путем предоставления ему списка со всеми именами, а именно:

def processNames(names):
    for name in names:
        try:
            processing(name)
        except:
            print('Failed. Will try in next script run')
            break

Как мне использовать имя, при котором скрипт не удался, и запустить следующийитерация, начинающаяся с имени, на котором она ранее потерпела неудачу?

1 Ответ

0 голосов
/ 22 февраля 2019

Вы можете сделать это с помощью дополнительной переменной counter, чтобы записать, где произошел сбой.Код:

def processNames(names):
    counter=0
    for index, name in enumerate(names):
        if index>counter:
            try:
                processing(name)
            except:
                print('Failed. Will try in next script run')
                counter=index

Если подумать о комментариях, это может быть лучше:

def processNames(names, counter):
    for index, name in enumerate(names):
        if index>counter:
            try:
                processing(name)
            except:
                print('Failed. Will try in next script run')
                counter=index
    return whateveryouneed, counter

Также может потребоваться поиск for-else петли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...