#python-3.x #shell #scripting
#python-3.x #оболочка #сценарии
Вопрос:
Итак, я был в процессе создания скрипта, который принимает символы utf-8 из stdin и выводит количество битов, которые занимает дерево дерево Хаффмана кодировка символов Хаффмана. Я хочу использовать строгую кодировку, поэтому в случае неожиданного символа на консоль будет выведен UnicodeError (с использованием python 3).
Я хочу знать, что объективно лучше делать в случае аварии:
- вывод в стандартный вывод тогда и только тогда, когда ошибка не будет обнаружена.
- Или выведите то, что уже было закодировано в стандартный вывод, с последующим UnicodeError (который, конечно, печатается в stderr).
- или это не имеет значения.
Комментарии:
1. Привет, я думаю, это будет зависеть от того, полезен ли потоковый вывод для вашей команды. Похоже, вывод имеет смысл только в том случае, если весь ввод проверен, поэтому, возможно, выведите любую ошибку на
stderr
, в противном случае выведите результат наstdout
.2. Можете ли вы привести пример проблемы, которая потребовала бы потокового вывода?
3. например, если вы выводите большой объем данных (например, конвертируете файл из одного формата в другой), которые потребитель будет считывать и обрабатывать в цикле … здесь звучит так, как будто вы распечатываете небольшое резюме файла, поэтому я не уверен, что это применимо.
4. Я вижу, спасибо за совет!
Ответ №1:
Спасибо за помощь IronMan: вот краткое изложение.
Это зависит от обстоятельств:
- Если вам нужен весь файл данных для вывода ответа, это не имеет значения.
- Если вы можете передавать выходные данные в потоковом режиме (например, преобразование файлов), то при возникновении этой проблемы у вас должна возникнуть ошибка.