El módulo OS en Python proporciona funciones para interactuar con el sistema operativo. OS viene bajo los módulos de utilidad estándar de Python. Este módulo proporciona una forma portátil de usar la funcionalidad dependiente del sistema operativo.
os.ttyname()
El método en Python se usa para obtener el dispositivo terminal asociado con el descriptor de archivo especificado.
Un descriptor de archivo es un valor entero pequeño que corresponde a un archivo u otro recurso de entrada/salida, como una tubería o un conector de red. Es un indicador abstracto de un recurso y actúa como identificador para realizar varias operaciones de E/S de nivel inferior como lectura, escritura, envío, etc.
Por ejemplo: la entrada estándar suele ser un descriptor de archivo con valor 0, la salida estándar suele ser un descriptor de archivo con valor 1 y el error estándar suele ser un descriptor de archivo con valor 2. Estos descriptores de archivo, es decir, 0 (stdin), 1 (stdout) y 2 (stderr) son descriptores de archivo estándar utilizados por nuestros programas. Otros archivos abiertos por el proceso actual obtendrán el valor 3, 4, 5 y así sucesivamente.
Nota: este método solo está disponible en plataformas UNIX y se genera una excepción si el descriptor de archivo especificado no está asociado con ningún dispositivo terminal.
Sintaxis: os.ttyname(fd)
Parámetro:
fd : Un descriptor de archivoTipo de devolución: este método devuelve un valor de string que representa el dispositivo terminal asociado con el descriptor de archivo especificado fd.
Código #1:
Uso del método os.ttyname() para obtener el dispositivo terminal asociado con un descriptor de archivo.
# Python program to explain os.ttyname() method # importing os module import os # Standard file descriptors # i.e 0 (stdin), 1 (stdout), and 2 (stderr) # are used by our program # Get the terminal device # associated with these file descriptor print("Terminal device associated with:") print("Standard input:", os.ttyname(0)) print("Standard output:", os.ttyname(1)) print("standard error", os.ttyname(2)) # Open a new pseudo-terminal pair # using os.openpty() method # It will return master and slave # file descriptor for # pty ( pseudo terminal device) and # tty ( native terminal device) respectively master, slave = os.openpty() # Get the terminal device # associated with these file descriptor print("Master:", os.ttyname(master)) print("Slave:", os.ttyname(slave))
Terminal device associated with: Standard input: /dev/pts/0 Standard output: /dev/pts/0 standard error /dev/pts/0 Master: /dev/ptmx Slave: /dev/pts/1
Código #2: si el descriptor de archivo especificado no está asociado con ningún dispositivo terminal
# Python program to explain os.ttyname() method # importing os module import os # If the specified file descriptor # is not associated with any # terminal device, then an exception # will be raised. For example: # Create a pipe using os.pipe() method # It will return a pair of # file descriptors (r, w) usable for # reading and writing, respectively. r, w = os.pipe() # Get the terminal device associated # with the file descriptor r or w print(os.ttyname(r))
Traceback (most recent call last): File "getTerminalDevice.py", line 20, in print(os.ttyname(r)) OSError: [Errno 25] Inappropriate ioctl for device
Código n.º 3: Manera de manejar la excepción planteada anteriormente
# Python program to explain os.ttyname() method # importing os module import os # Create a pipe using os.pipe() method # It will return a pair of # file descriptors (r, w) usable for # reading and writing, respectively. r, w = os.pipe() # Method 1 # (using exception handling technique) # Try to get the terminal device associated # with the file descriptor r or w try : print(os.ttyname(r)) except OSError as error : print(error) print("File descriptor is not associated with any terminal device") # Method 2 # using os.isatty() method # check first if the file descriptor w # is associated with a tty(-like) device or not # if it is then only get the terminal # device associated with it if os.isatty(w) : print(os.ttyname(w)) else : print("File descriptor is not associated with any terminal device")
[Errno 25] Inappropriate ioctl for device File descriptor is not associated with any terminal device File descriptor is not associated with any terminal device