Как мне продолжить в случае ошибки в состоянии цикла в Python? - PullRequest
0 голосов
/ 05 октября 2019

У меня есть код Python, который зацикливается на файл. Я получаю ошибку UTF-8 (invalid continuation byte) при чтении файла. Я просто хочу, чтобы моя программа игнорировала это.

Я попытался использовать попытку, за исключением кода внутри, но это не сработает, поскольку ошибка находится в состоянии цикла for. Я также пытался использовать попытку, за исключением цикла, но затем, когда он улавливает ошибку, он не запускает цикл снова.

with open(input_file_path, "r") as input_file:
    for line in input_file:
        # code irrelevant to question

Что происходит, это выдает эту ошибку на for line in input_file:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe0 in position 5: invalid continuation byte`

Я хочу пропустить эту строку и перейти к следующей. По сути, попытка поймать условие моего цикла for.

Ответы [ 3 ]

2 голосов
/ 05 октября 2019

Это работает? (отредактировано для найденного решения OP)

with open(input_file_path, "r", encoding="utf8", errors="surrogateescape") as input_file:
    for line in input_file:
        try:
            yourcode
        except:
            continue
0 голосов
/ 05 октября 2019

Вы можете использовать

with open(input_file_path, "r", encoding="ISO-8859-1") as input_file:
    for line in input_file:
0 голосов
/ 05 октября 2019

Вы пробовали что-то вроде этого, когда UnicodeDecoceError вызывается, цикл продолжится со следующей итерации.

with open(input_file_path, "rb") as input_file:
    for line in input_file:
        try:
            line_i = line.decode(encoding='utf-8')
        except UnicodeDecodeError:
            continue
...