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

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

25.03.2017, 20:56. Показов 2063. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru