Общие рекомендации по написанию сценариев при возникновении ошибки

#python-3.x #shell #scripting

#python-3.x #оболочка #сценарии

Вопрос:

Итак, я был в процессе создания скрипта, который принимает символы utf-8 из stdin и выводит количество битов, которые занимает дерево дерево Хаффмана кодировка символов Хаффмана. Я хочу использовать строгую кодировку, поэтому в случае неожиданного символа на консоль будет выведен UnicodeError (с использованием python 3).

Я хочу знать, что объективно лучше делать в случае аварии:

  • вывод в стандартный вывод тогда и только тогда, когда ошибка не будет обнаружена.
  • Или выведите то, что уже было закодировано в стандартный вывод, с последующим UnicodeError (который, конечно, печатается в stderr).
  • или это не имеет значения.

Комментарии:

1. Привет, я думаю, это будет зависеть от того, полезен ли потоковый вывод для вашей команды. Похоже, вывод имеет смысл только в том случае, если весь ввод проверен, поэтому, возможно, выведите любую ошибку на stderr , в противном случае выведите результат на stdout .

2. Можете ли вы привести пример проблемы, которая потребовала бы потокового вывода?

3. например, если вы выводите большой объем данных (например, конвертируете файл из одного формата в другой), которые потребитель будет считывать и обрабатывать в цикле … здесь звучит так, как будто вы распечатываете небольшое резюме файла, поэтому я не уверен, что это применимо.

4. Я вижу, спасибо за совет!

Ответ №1:

Спасибо за помощь IronMan: вот краткое изложение.

Это зависит от обстоятельств:

  • Если вам нужен весь файл данных для вывода ответа, это не имеет значения.
  • Если вы можете передавать выходные данные в потоковом режиме (например, преобразование файлов), то при возникновении этой проблемы у вас должна возникнуть ошибка.