如何区分/ dev / tty与stdin,stdout,stderr?

时间:2013-06-06 11:22:18

标签: unix python-3.x console-application

我尝试使用Python3:

import os
fd = os.open('/dev/tty', os.O_RDWR|os.O_NOCTTY)
print(fd)

它总是在Linux中打印3。 / dev / tty文件描述符总是3?

我想区分/ dev / tty与stdin,stdout,stderr。我最初的尝试是检查文件描述符,因为stdin,stdout,stderr返回0,1或2。

我问这个的原因是因为要在Python中写入/ dev / tty,我必须使用字节而不是字符串,而使用stdin,stderr,stdout,我必须使用字符串。

所以我的第二次尝试是:

try:
    if file.isatty() and file not in [sys.stdout,sys.stdin,sys.stderr]:
        use_bytes = True
    else:
        use_bytes = False
except AttributeError:
    use_bytes = False

有没有更好的方法呢?

0 个答案:

没有答案