如何在Python中检测伪孔以激活着色



支持控制台着色的应用程序的通常规则是在当前控制台是TTY时激活它。

此方法破坏了连续集成服务器(例如Jenkins,Travis,...),因为它们没有为其伪孔打开TTY。

我想知道是否可以区分这两种情况:

  • mycommand在Jenkins下运行 - 我们要启用着色
  • mycommand >> output.log-我们不想最终在日志文件中获得ANSI Escapes。

我的旧ANSI检测代码:

import sys
import os
if (hasattr(sys.stderr, "isatty") and sys.stderr.isatty()) or 
    ('TERM' in os.environ.keys() and os.environ['TERM'] in ['linux']) or 
    ('PYCHARM_HOSTED' in os.environ.keys()):
    coloring = True

我可以改进此问题以解决这个问题吗?

由于您已经在使用环境变量PYCHARM_HOSTED,因此我建议您在CI环境中使用类似的东西。您特别提到了詹金斯和特拉维斯。这两个系统都设置了可以使用的环境变量。一些可能性是...

Jenkins环境变量:

JENKINS_URL  Set to the URL of the Jenkins master that's running the build.
BUILD_URL    The URL where the results of this build can be found.
BUILD_TAG    String of jenkins-${JOB_NAME}-${BUILD_NUMBER}.

(源)

travis环境变量:

CI=true
TRAVIS=true
CONTINUOUS_INTEGRATION=true

(源)

相关内容

  • 没有找到相关文章

最新更新