通过Pygments重定向python回溯

时间:2013-04-30 18:23:47

标签: python bash unix pygments

我的应用程序是从run.py调用的。我已经安装了Pygments,我想重定向Python的输出,这样当回溯发生时,它们的格式就会更容易阅读。

这是我尝试过的命令python run.py 2>&1 | pygmentize -l py

通过pygmentize重定向stdoutstderr。 pygmentize文档说如果没有提供文件,它将从stdin读取,“如果没有给出输入文件,使用stdin,如果没有给出-o,请使用stdout。”

但是,当我像这样重定向时,没有输出 - 错误或日志语句或其他任何东西 - 输出到我的终端。

当我运行我的命令而没有将其输出汇总到pygmentize时,即python run.py 2>&1我得到了这个输出:

INFO:werkzeug: * Running on http://0.0.0.0:5000/
INFO:werkzeug: * Restarting with reloader

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

从stdin读取时,

pygmentize reads the whole input stream只在输入流关闭时输出所有内容,所以在第一个进程结束后,你只能通过pygments输出任何输出。

我担心你无能为力。如果你想格式化连续流,你只能尝试围绕pygments编写自己的包装器,它会以块的形式读取输入流并将其提供给pygments。

你现在根本没有看到任何输出的原因是你可能正在使用 Ctrl + C 来停止shell中的进程,但这会杀死这两个进程。如果您使用kill仅终止服务器进程,那么您应该至少看到上面提到的那些行通过pygments。