2015-04-20 4 views
4

Как вы получаете путь к устройству для текущего TTY?Получить путь к текущему TTY в Python

Python имеет sys.stdin, sys.stdout и os.ttyname, но вы не можете передать ни один из формировщиков последнему, потому что для этого требуется файловый дескриптор.

ответ

5

Вы можете передать sys.stdout.fileno в os.ttyname:

In [3]: os.ttyname(sys.stdout.fileno()) 
Out[3]: '/dev/pts/24' 
+0

Вы правильно! Как ни странно, 'sys.stdout' не имеет метода' fileno' в bpython, хотя он работает в python и ipython. Я делаю все свое REPL Driven Development в bpython и поэтому пропустил его. –

+0

'os.ttyname (1) может работать как для' –

1

У этого могут быть проблемы с переносимостью, но в большинстве Unix-подобных сред /dev/stdout относится к текущему терминалу и уникален для каждого соединения [windows, tabs, ssh и т. Д.], Который у вас открыт. С учетом этих допущений, вы можете использовать:

with open('/dev/stdout') as fd: 
    tty_path = os.ttyname(fd.fileno()) 
Смежные вопросы