[注:颜色于 2021 年 12 月 7 日更新,更清晰 :)]
注意:不直接回答上面的问题,因为我不擅长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 代码,所以这些是我坚持的颜色:)
颜色更新更令人愉悦 [2021 年 12 月 7 日]
# ---
# Color python error output
# ---
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')" #set blue bkgrd, bold yellow text
boldyellow="$(printf '\033[0;1;33m')" #set gold yellow text
boldred="$(printf '\033[0;1;31m')" #set bold red
# Color error messages from python, use as "copython test.py" instead of "python test.py"
# WARNING: Takes time to run (small but noticeable)
# May also interfer with print to console (for long running programs)
copython() {
python $@ 2>&1 | sed -e "s/Traceback/${boldyellowonblue}&${norm}/g" \
-e "s/File \".*\.py\".*$/${bold}&${norm}/g" \
-re "s/\, line [0-9]\+/${boldred}&${norm}/g" \
-re "s/ {4}(.*)$/${boldyellow}&${norm}/g" \
-e "s/.*Error:.*$/${boldred}&${norm}/g" \
}
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 文件的东西。我并不清楚如何使用Tobin的答案。
对于那些想知道如何使用的人,需要安装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