如何判斷連接到我的工作室的文件(或tty)?在Linux上查找stdin文件路徑的Python
喜歡的東西:
>>> import sys
>>> print sys.stdin.__path__
'/dev/tty1'
>>>
我可以看看在PROC:
import os, sys
os.readlink('/proc/self/fd/%s' % sys.stdin.fileno())
但似乎應該有一個內置的方式嗎?
如何判斷連接到我的工作室的文件(或tty)?在Linux上查找stdin文件路徑的Python
喜歡的東西:
>>> import sys
>>> print sys.stdin.__path__
'/dev/tty1'
>>>
我可以看看在PROC:
import os, sys
os.readlink('/proc/self/fd/%s' % sys.stdin.fileno())
但似乎應該有一個內置的方式嗎?
Got it!
>>> import os
>>> import sys
>>> print os.ttyname(sys.stdin.fileno())
'/dev/pts/0'
>>>
它raise
小號OSError: [Errno 22] Invalid argument
如果標準輸入不是一個TTY;但這很容易測試isatty()
的sys.std *對象是standard Python file objects,所以他們有一個name
attribute和isatty
method:
>>> import sys
>>> sys.stdout.name
'<stdout>'
>>> sys.stdout.isatty()
True
>>> anotherfile = open('/etc/hosts', 'r')
>>> anotherfile.name
'/etc/hosts'
>>> anotherfile.isatty()
False
短,告訴你,你得到了什麼TTY設備,這就是擴展被Python提供的API。
請記住,'stdout' et。人。可能是一個沒有'name'和/或'isatty()'的文件類對象,所以你應該做好準備。 – kindall 2011-05-31 17:56:14
我希望找出我所連接的TTY設備(如果工作室連接到TTY) – tMC 2011-05-31 17:56:33
@ kindall:當然,對於標準輸出來說,所需要的只是一種「寫入」方法。 @tMC:那麼你所能做的只是檢查'/ proc'文件系統,或者如果操作系統通過庫提供了這樣的信息,那麼使用ctypes來訪問該信息。沒有進一步的stdlib python API,AFAIC。 – 2011-05-31 17:58:20