termios
— Tty-kontroll i POSIX-stil¶
Denna modul tillhandahåller ett gränssnitt till POSIX-anropen för tty I/O-kontroll. För en fullständig beskrivning av dessa anrop, se termios(3) Unix-manualsida. Den är endast tillgänglig för de Unix-versioner som stöder POSIX termios-stil tty I/O-kontroll som konfigureras under installationen.
Tillgänglighet: Unix.
Alla funktioner i denna modul tar en filbeskrivare fd som sitt första argument. Detta kan vara en heltalsfilbeskrivning, som den som returneras av sys.stdin.fileno()
, eller ett filobjekt, som sys.stdin
själv.
Denna modul definierar också alla konstanter som behövs för att arbeta med de funktioner som tillhandahålls här; dessa har samma namn som sina motsvarigheter i C. Se din systemdokumentation för mer information om hur du använder dessa gränssnitt för terminalstyrning.
Modulen definierar följande funktioner:
- termios.tcgetattr(fd)¶
Returnerar en lista som innehåller tty-attributen för filbeskrivaren fd, enligt följande:
[iflag, oflag, cflag, lflag, ispeed, ospeed, cc]
där cc är en lista med tty-specialtecken (var och en en sträng med längden 1, utom objekten med indexVMIN
ochVTIME
, som är heltal när dessa fält definieras). Tolkningen av flaggorna och hastigheterna samt indexeringen i cc-arrayen måste göras med hjälp av de symboliska konstanter som definieras i modulentermios
.
- termios.tcsetattr(fd, when, attributes)¶
Ställ in tty-attributen för filbeskrivaren fd från attributes, som är en lista liknande den som returneras av
tcgetattr()
. Argumentet when bestämmer när attributen ska ändras:- termios.TCSANOW¶
Ändra attribut omedelbart.
- termios.TCSADRAIN¶
Ändra attribut efter att ha sänt all köad utdata.
- termios.TCSAFLUSH¶
Ändra attribut efter att ha sänt all köad utdata och kasserat all köad indata.
- termios.tcsendbreak(fd, duration)¶
Skicka en paus på filbeskrivaren fd. En noll duration skickar en paus i 0,25–0,5 sekunder; en icke-noll duration har en systemberoende betydelse.
- termios.tcdrain(fd)¶
Vänta tills alla utdata som skrivits till filbeskrivaren fd har överförts.
- termios.tcflush(fd, queue)¶
Kassera köade data på filbeskrivaren fd. Väljaren queue anger vilken kö:
TCIFLUSH
för ingångskön,TCOFLUSH
för utgångskön ellerTCIOFLUSH
för båda köerna.
- termios.tcflow(fd, action)¶
Avbryt eller återuppta inmatning eller utmatning på filbeskrivaren fd. Argumentet action kan vara
TCOOFF
för att avbryta utdata,TCOON
för att starta om utdata,TCIOFF
för att avbryta inmatning ellerTCION
för att starta om inmatning.
- termios.tcgetwinsize(fd)¶
Returnerar en tupel
(ws_row, ws_col)
som innehåller tty-fönsterstorleken för filbeskrivaren fd. Krävertermios.TIOCGWINSZ
ellertermios.TIOCGSIZE
.Tillagd i version 3.11.
- termios.tcsetwinsize(fd, winsize)¶
Ställ in tty-fönsterstorleken för filbeskrivaren fd från winsize, som är en tupel med två punkter
(ws_row, ws_col)
som den som returneras avtcgetwinsize()
. Kräver att minst ett av paren (termios.TIOCGWINSZ
,termios.TIOCSWINSZ
); (termios.TIOCGSIZE
,termios.TIOCSSIZE
) är definierat.Tillagd i version 3.11.
Se även
- Modul
tty
Praktiska funktioner för vanliga terminalstyrningsoperationer.
Exempel¶
Här är en funktion som frågar efter ett lösenord med ekot avstängt. Notera tekniken med ett separat tcgetattr()
-anrop och en try
… finally
-sats för att säkerställa att de gamla tty-attributen återställs exakt oavsett vad som händer:
def getpass(prompt="Lösenord: "):
import termios, sys
fd = sys.stdin.fileno()
gammal = termios.tcgetattr(fd)
new = termios.tcgetattr(fd)
ny[3] = ny[3] & ~termios.ECHO # lflags
försök:
termios.tcsetattr(fd, termios.TCSADRAIN, ny)
passwd = input(prompt)
slutligen: termios.tcsetattr(fd)
termios.tcsetattr(fd, termios.TCSADRAIN, gammal)
returnera passwd