クロスプラットフォームでのユーザー入力からの 1 文字の読み取り
さまざまなプログラミング シナリオでは、ユーザー入力から 1 文字を読み取ることが必要になります。バッファリングやエコーなしで。この機能は Windows で利用できる有名な getch() 関数に似ていますが、複数のプラットフォームで動作する汎用的なアプローチが望まれています。
解決策:
これを実現するにはクロスプラットフォームの文字読み取りでは、ActiveState Recipes サイトのコミュニティ主導の Python レシピを利用できます。「標準入力からの getch() のような非バッファー文字読み取り」 Windows と Unix の両方で。」このレシピは、Windows と Unix ベースのシステムの両方に対応するクラスベースの実装を提供します。
実装:
次のコード スニペットは、クロス ベースの実装を示しています。プラットフォーム文字読み取りクラス:
class _Getch: """Gets a single character from standard input. Does not echo to the screen.""" def __init__(self): try: self.impl = _GetchWindows() except ImportError: self.impl = _GetchUnix() def __call__(self): return self.impl() class _GetchUnix: def __init__(self): import tty, sys def __call__(self): import sys, tty, termios fd = sys.stdin.fileno() old_settings = termios.tcgetattr(fd) try: tty.setraw(sys.stdin.fileno()) ch = sys.stdin.read(1) finally: termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) return ch class _GetchWindows: def __init__(self): import msvcrt def __call__(self): import msvcrt return msvcrt.getch() getch = _Getch()
このクラスを利用するには、_Getch クラスをインスタンス化して呼び出します。 それ。結果は、バッファリングやエコーなしで、ユーザーが入力した 1 文字になります。例:
result = getch()
結論:
このクロスプラットフォームの文字読み取りアプローチは、キーストロークのキャプチャなど、即時のユーザー入力が必要な状況に広く適用できます。ターミナル アプリケーションまたは対話型ユーザー インターフェイスの実装。
以上が異なるプラットフォーム間でユーザー入力から 1 文字を読み取る方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。