Python在Linux上查找stdin文件路径

Python在Linux上查找stdin文件路径,python,stdin,filepath,Python,Stdin,Filepath,我怎样才能知道附加到我的stdios的文件(或tty) 比如: >>> import sys >>> print sys.stdin.__path__ '/dev/tty1' >>> 我可以在proc中查看: import os, sys os.readlink('/proc/self/fd/%s' % sys.stdin.fileno()) 但是似乎应该有一种内置方式?sys.std*对象是,因此它们有a和a: 导入系统 >>>sys.

我怎样才能知道附加到我的stdios的文件(或tty)

比如:

>>> import sys
>>> print sys.stdin.__path__
'/dev/tty1'
>>>
我可以在proc中查看:

import os, sys
os.readlink('/proc/self/fd/%s' % sys.stdin.fileno())
但是似乎应该有一种内置方式?

sys.std*对象是,因此它们有a和a:

导入系统 >>>sys.stdout.name '' >>>sys.stdout.isatty() 真的 >>>另一个文件=打开('/etc/hosts',r') >>>另一个文件名 “/etc/hosts” >>>另一个文件。isatty() 假的 除了告诉你你得到了什么TTY设备之外,这是Python提供的API的扩展。

明白了

>>> import os
>>> import sys
>>> print os.ttyname(sys.stdin.fileno())
'/dev/pts/0'
>>>

如果stdin不是TTY,则它将
raise
s
OSError:[Errno 22]无效参数;但这很容易用
isatty()

进行测试。请记住,
stdout
等可能是一个类似文件的对象,没有
名称和/或
isatty()
,所以您应该为这种情况做好准备。我希望找到我连接到的TTY设备(如果stdios连接到TTY)@金德:当然;对于stdout,只需要一个
write
方法@tMC:那么你所能做的就是检查'/proc'文件系统,或者如果操作系统通过库提供了这样的信息,那么就使用ctypes来访问这些信息。AFAIC对此没有进一步的stdlib python API。
>>> import os
>>> import sys
>>> print os.ttyname(sys.stdin.fileno())
'/dev/pts/0'
>>>