Python находит стандартный путь к файлу в Linux - PullRequest
5 голосов
/ 31 мая 2011

Как я могу определить файл (или tty), который прикреплен к моей студии?

Что-то вроде:

>>> import sys
>>> print sys.stdin.__path__
'/dev/tty1'
>>>

Я мог бы посмотреть в proc:

import os, sys
os.readlink('/proc/self/fd/%s' % sys.stdin.fileno())

Но похоже, что должен быть встроенный способ?

Ответы [ 2 ]

2 голосов
/ 31 мая 2011

Объекты sys.std * являются стандартными файловыми объектами Python , поэтому они имеют атрибут name и метод isatty :

>>> import sys
>>> sys.stdout.name
'<stdout>'
>>> sys.stdout.isatty()
True
>>> anotherfile = open('/etc/hosts', 'r')
>>> anotherfile.name
'/etc/hosts'
>>> anotherfile.isatty()
False

Если не сказать точно, какое у вас устройство TTY, это расширение API, предлагаемого Python.

1 голос
/ 01 июня 2011

Понял!

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

Это raise с OSError: [Errno 22] Invalid argument, если стандартный ввод не TTY; но это достаточно просто проверить с помощью isatty()

...