python - 如何知道输出是否进入终端?

标签 python c linux bash xterm

<分区>

Possible Duplicate:
Detect if stdin is a terminal or pipe in C/C++/Qt?

我想知道我的程序的输出是直接进入终端还是被重定向到管道或文件。

因为如果它进入终端,我想输出转义序列来制作彩色文本,但在文件或管道中不受欢迎。

我知道这是可能的,因为“ls”可以做到,有人知道怎么做吗?

最佳答案

使用 os.isatty() functionstdout 流或您需要测试的任何其他文件的文件描述符上:

>>> import sys, os
>>> os.isatty(sys.stdout.fileno())
True

对于打开的文件(如 sys.stdout 流).fileno() method返回必要的描述符。

关于python - 如何知道输出是否进入终端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13669381/

相关文章:

python - 对角化+可训练的自定义 Tensorflow 层

c - 检查传递给 gdb 中函数的多维数组

c - 如何访问作为参数传递给c中的函数的char数组的元素?

c - 如何用 C 语言编写清理内存池的函数

使用 fork() 创建进程树,然后对它们进行编号并将其显示在数组中

linux - 通过交换文本重命名文件

python - 如何修复 TypeError : 'file' object is unsubscriptable

python - BlockingIOError 异常被忽略;我应该担心吗?

python - 在单个单词字符串 PYTHON 中查找数字字符

linux - 使用 xargs 和 xargs -0 的 Bash 命令