termios — POSIXスタイルのttyコントロール—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.8/library/termios
移動先:案内検索

termios —POSIXスタイルのttyコントロール


このモジュールは、tty I / O制御のためのPOSIX呼び出しへのインターフェースを提供します。 これらの呼び出しの詳細については、 termios(3) Unixのマニュアルページを参照してください。 これは、インストール中に構成されたPOSIX termios スタイルのttyI / O制御をサポートするUnixバージョンでのみ使用できます。

このモジュールのすべての関数は、最初の引数としてファイル記述子 fd を取ります。 これは、sys.stdin.fileno()によって返されるような整数のファイル記述子、またはsys.stdin自体などのファイルオブジェクトにすることができます。

このモジュールは、ここで提供される関数を操作するために必要なすべての定数も定義します。 これらは、Cの対応するものと同じ名前です。 これらの端末制御インターフェースの使用の詳細については、システムのドキュメントを参照してください。

このモジュールは、次の機能を定義します。

termios.tcgetattr(fd)
次のように、ファイル記述子 fd のtty属性を含むリストを返します。[iflag, oflag, cflag, lflag, ispeed, ospeed, cc]ここで、 cc はtty特殊文字(それぞれ長さ1の文字列)のリストです。ただし、インデックスVMINおよびVTIMEの項目は、これらのフィールドが定義されている場合は整数です)。 cc 配列のフラグと速度の解釈、およびインデックス付けは、 termios モジュールで定義されたシンボリック定数を使用して実行する必要があります。
termios.tcsetattr(fd, when, attributes)
属性からファイル記述子 fd のtty属性を設定します。これは、 tcgetattr()によって返されるようなリストです。 when 引数は、属性がいつ変更されるかを決定します。TCSANOWはすぐに変更され、TCSADRAINはキューに入れられたすべての出力を送信した後に変更され、TCSAFLUSHは後に変更されます。キューに入れられたすべての出力を送信し、キューに入れられたすべての入力を破棄します。
termios.tcsendbreak(fd, duration)
ファイル記述子 fd でブレークを送信します。 ゼロ duration は、0.25〜0.5秒間ブレークを送信します。 ゼロ以外の期間には、システムに依存する意味があります。
termios.tcdrain(fd)
ファイル記述子 fd に書き込まれたすべての出力が送信されるまで待ちます。
termios.tcflush(fd, queue)
ファイル記述子 fd のキューに入れられたデータを破棄します。 queue セレクターは、入力キューの場合はTCIFLUSH、出力キューの場合はTCOFLUSH、両方のキューの場合はTCIOFLUSHのいずれのキューを指定します。
termios.tcflow(fd, action)
ファイル記述子 fd の入力または出力を一時停止または再開します。 action 引数は、出力を一時停止するTCOOFF、出力を再開するTCOON、入力を一時停止するTCIOFF、または再起動するTCIONのいずれかになります。入力。

も参照してください

モジュール tty
一般的な端末制御操作に便利な機能。


これは、エコーをオフにしてパスワードの入力を求める関数です。 別の tcgetattr()呼び出しと tryfinally ステートメントを使用して、何が起こっても古いtty属性が正確に復元されるようにする手法に注意してください。

def getpass(prompt="Password: "):
    import termios, sys
    fd = sys.stdin.fileno()
    old = termios.tcgetattr(fd)
    new = termios.tcgetattr(fd)
    new[3] = new[3] & ~termios.ECHO          # lflags
    try:
        termios.tcsetattr(fd, termios.TCSADRAIN, new)
        passwd = input(prompt)
    finally:
        termios.tcsetattr(fd, termios.TCSADRAIN, old)
    return passwd