Примечание. Не дает прямого ответа на вопрос выше, так как я плохо разбираюсь в sed
. Но это улучшает читабельность, и по сравнению с другими, которые требуют ipython/медленны, это то, что я действительно использую регулярно.
Текущее (облегченное решение - например, не нужно ничего устанавливать и не нужно редактировать существующие файлы python один за другим)
Согласно https://stackoverflow.com/a/20910449, давайте использовать цветовые коды sed
и ANSI.
Добавить в ~/.bashrc
norm="$(printf '\033[0m')" #returns to "normal"
bold="$(printf '\033[0;1m')" #set bold
red="$(printf '\033[0;31m')" #set red
boldyellowonblue="$(printf '\033[0;1;33;44m')"
boldyellow="$(printf '\033[0;1;33m')"
boldred="$(printf '\033[0;1;31m')" #set bold, and set red.
copython() {
python $@ 2>&1 | sed -e "s/Traceback/${boldyellowonblue}&${norm}/g" \
-e "s/File \".*\.py\".*$/${boldyellow}&${norm}/g" \
-e "s/\, line [[:digit:]]\+/${boldred}&${norm}/g"
}
Перезагрузить
$ source ~/.bashrc
Как это выглядит изначально
$ python main.py
Довольно неприятно читать. Теперь сравните с
$ copython main.py
[
Это немного кричаще, но я доволен этим, и я не понимаю коды ANSI, поэтому я застрял на этих цветах :)
Примечание по цветовому коду ANSI
Обратите внимание, что \033[
отмечает начало кода, что помогло мне немного лучше понять, что происходит.
0m # normal
0;1m # bold
0;1;33;44m # bold yellow on blue
0;1;33m # bold yellow
0;1;31m # bold red
Таким образом, я предполагаю, что первое 1
указывает жирный шрифт, затем второе 33
указывает цвет переднего плана, а третье 44
указывает цвет фона. Что-то подобное.
Устаревший
Я также искал что-то, где мне не нужно было изменять каждый отдельный файл Python, из которого я хочу печатать сообщения об ошибках. Как использовать ответ Тобина, я не сразу понял.
Для тех, кому интересно, как использовать, необходимо установить vimcat
, затем добавить вышеуказанную функцию в bashrc (или другой файл, который вы используете) и запустить $ colorized test.py
(вместо $ python test.py
)
Например
~$ wget https://raw.githubusercontent.com/vim-scripts/vimcat/master/vimcat vimcat
~$ mv vimcat /usr/share/bin # or /home/bin or wherever you want
~$ echo $PATH # make sure vimcat's directory is in your PATH variable, if not add to `~/.bashrc`
home/rui/.local/bin:/usr/local/sbin:/usr/share/bin
~$ source ~/.bashrc # reload PATH if had to add vimcat location
~$ vimcat somefile.sh # test that vimcat can be called
~$ colorized calibrate.py
Как для меня выглядит до и после:
И проверка того, что vimcat работает/получен правильно:
а>
Обратите внимание, что это занимает заметно больше времени!
$ time colorized calibrate.py
real 0m0.484s
user 0m0.392s
sys 0m0.085s
rui@chaiX1YG2:~$ $ time python calibrate.py
real 0m0.343s
user 0m0.271s
sys 0m0.072s
person
orangenarwhals
schedule
28.12.2019