С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705

Как мне обработать исключение так, чтобы программа продолжала работать, будто исключения не было?

25.03.2017, 20:56. Показов 2026. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Друзья! Есть текстовый файл в кодировке UTF-16LE (суть тот же самый файл *.reg, только сохранённый с расширением *.txt), там даже BOM впереди есть. И я его считываю построчно. И вот надо же такому случиться, что почему-то в этом файле оказалась строка совсем не в UTF-16LE кодировке. Её бы просто пропустить и всё. Как это сделать? Поскольку считываю файл в цикле, сами видите, после перехвата исключения цикл завершает свою работу, а нужно, чтобы переходил на следующую итерацию. Не знаю, как это реализовать. Спасибо, кто отклинется. Прикладываю файл foo.txt, он небольшой, всего пять строчек.

Python
1
2
3
4
5
6
7
8
import codecs
f = codecs.open ('foo.txt', 'r', "UTF-16LE")
try:
    for line in f:
        print(line)
except UnicodeDecodeError:
    print()
f.close()
Вложения
Тип файла: txt foo.txt (480 байт, 7 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.03.2017, 20:56
Ответы с готовыми решениями:

Как сделать так, чтобы при входе системы в спящий режим отдельная программа продолжала бы работать?
Как можно сделать так, что когда система уходит в спящий режим, то отдельная нужная мне программа все равно продолжает работать? Ну к...

Чтение клавиш. Сделать так, чтобы программа продолжала работать и не ждала ввода gerh()
Я написал программку. она ещё не готова. но вот вопрос. Как сделать так, чтоб она продолжала работать и не ждала ввода gerh() в двнном...

Как сделать так, чтобы при выходе из программы она продолжала работать? (не вирус)
Пишу программу под Андроид. как сделать так, чтобы при выходе из программы она продолжала работать?, пример - будильник.

6
11 / 11 / 7
Регистрация: 09.02.2017
Сообщений: 20
25.03.2017, 21:44
попробуй добавить errors='ignore'
Python
1
2
3
4
5
6
7
8
import codecs
f = codecs.open ('foo.txt', 'r', 'UTF-16LE', errors='ignore')
try:
    for line in f:
        print(line)
except UnicodeDecodeError:
    print()
f.close()
1
 Аватар для Ennjin
103 / 81 / 54
Регистрация: 25.11.2016
Сообщений: 278
25.03.2017, 21:51
Python
1
2
3
4
5
6
7
8
9
import codecs
f = codecs.open ('foo.txt', 'r', "UTF-16LE")
for line in f:
    try:
        print(line)
    except UnicodeDecodeError as err:
        print('Ошибка: {}'.format(err))
        continue
f.close()
1
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
25.03.2017, 22:21  [ТС]
Ennjin, исключение происходит в строке
Python
1
f = codecs.open ('foo.txt', 'r', "UTF-16LE")
, а она в вашем коде не попадает в конструкцию try... except, поэтому исключение происходит программа аварийно завершается.

+++++++++++++++++++++++=

user20177, даже не знаю, что сказать. Я хотел, чтобы нераспознанные строки просто не выводились и всё. А сейчас они выводятся и вроде даже как корректно. Казалось бы, живи да радуйся. Но мы-то знаем, что мы просто напросто обманули интерпретатор, заставили его закрыть глаза на ошибку! Всё-таки правильнее было бы просто пропустить эти строки и всё.
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
26.03.2017, 02:39
Цитата Сообщение от kravam Посмотреть сообщение
Но мы-то знаем, что мы просто напросто обманули интерпретатор, заставили его закрыть глаза на ошибку!
errors служит не для обмана интерпретатора, а для обработки ошибок кодировки. Для этого параметра разные значения можно указать
1
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
27.03.2017, 18:35  [ТС]
oldnewyear, а не подскажите, какое значение писать в параметр "errors"?, чтобы строчка с исключением пропускалась при считывании? В документации на этот счёт ничего не сказано:

errors may be given to define the error handling. It defaults to 'strict' which causes a ValueError to be raised in case an encoding error occurs.
Это что касается параметра errors

++++++++++++++++++++++++++++=

По ссыли выше даны 5 функций зачем-то, я не знаю, могут они как-то помочь или нет:

codecs.register_error(name, error_handler)
codecs.lookup_error(name)
codecs.strict_errors(exception)
codecs.replace_errors(exception)
codecs.ignore_errors(exception)
Предполагаю, что нужно написать один из этих параметров:

register, lookup, strict, replace, ignore
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
27.03.2017, 23:05
https://docs.python.org/3.3/li... se-classes
По ссылке таблицы со значениями параметра errors
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.03.2017, 23:05
Помогаю со студенческими работами здесь

как сделать чтобы в процессе программа ждала завершения работы скажем батника а потом продолжала работать
как сделать чтобы в процессе программа ждала завершения работы скажем батника а потом продолжала работать???? (если можно то по подробние)

Как сделать так, чтобы при вызове Accept() программа продолжала реагировать на Windows Messages?
Короче, когда делаешь сервер в VC6, и вызываешь функцию Accept() класса CSocket, прога вроде-бы не зависла (в таскменеджере усе ок :), но...

Как мне сделать так чтобы не надо было указывать полный путь
Добрый день , форумчане. Как мне сделать так чтобы не надо было указывать полный путь ? Как прописать в path чтобы вместо ...

Как мне сделать так чтобы было и условие больше , и меньше, и равно?
#include<iostream> using namespace std; int main() { setlocale(LC_ALL, "ru"); float a, b; float h; cout << "Введите...

Как мне в ibupdatesql динамически сгенерировать Generate Sql чтобы можно было работать с dbnavigatorom
Я динамически создаю ibquery, ibupdatesql, как мне в ibupdatesql динамически сгенерировать Generate Sql чтобы можно было работать с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru