前段时间,我看到一个带有彩色输出的Mono应用程序,可能是因为它的日志系统(因为所有的消息都是标准化的).
现在,Python有了这个logging
模块,它允许你指定很多选项来自定义输出.所以,我想象Python可能会有类似的东西,但我无法在任何地方找到如何做到这一点.
有没有办法让Python logging
模块输出颜色?
我想要的(例如)红色错误,蓝色或黄色调试消息,等等.
当然这可能需要一个兼容的终端(大多数现代终端); 但logging
如果不支持颜色,我可以回退到原始输出.
有关如何使用记录模块获得彩色输出的任何想法?
我希望我的脚本在交互式shell会话中以及在使用重定向的stdout运行时(例如,当管道传递给其他命令时)采取不同的行为.
我如何识别Python脚本中发生了哪两个?
现有程序中此类行为的示例:grep --color = auto在交互式shell中运行时突出显示匹配,但在通过管道输入其他内容时则不会.
我发现了非常有用的语法
parser.add_argument('-i', '--input-file', type=argparse.FileType('r'), default='-')
Run Code Online (Sandbox Code Playgroud)
用于指定输入文件或使用stdin - 我想在程序中使用它们.但是,并不总是需要输入文件.如果我没有使用-i
或重定向输入
$ someprog | my_python_prog
$ my_python_prog < inputfile
Run Code Online (Sandbox Code Playgroud)
我不希望我的Python程序等待输入.我希望它只是移动并使用默认值.
有没有办法找出python脚本是否在IDLE解释器或终端中运行?
如果可能,跨平台工作,或者如果每个平台需要不同的方式.
如果可能,使用Python 2和Python 3,或者如果每个版本需要不同的方式.
我能想到的唯一方法是检查为IDLE运行的进程,但我不知道该怎么做.
如果IDLE对另一个脚本打开并且我的脚本在终端中运行,即使我的脚本没有在IDLE中运行,进程检查也会返回true.
我的脚本需要以不同的方式运行,具体取决于它是在IDLE还是终端中运行.
python ×4
argparse ×1
colors ×1
logging ×1
python-3.x ×1
python-idle ×1
shell ×1
stdin ×1
terminal ×1