ホームページ >バックエンド開発 >Python チュートリアル >クロスプラットフォームでブロックしたりエコーしたりせずに、ユーザー入力から 1 文字を読み取るにはどうすればよいですか?
ノンブロッキング入力: 単一文字のクロスプラットフォーム読み取り
画面にエコーせずにユーザー入力から単一文字を読み取るこれは、さまざまなプログラミング シナリオで一般的なニーズです。 Windows はこの目的のために特定の機能を提供していますが、クロスプラットフォーム ソリューションの実装は困難な場合があります。
クロスプラットフォーム アプローチ
この制限を克服するには、 ActiveState Recipes ライブラリを利用した多用途のアプローチにより、Windows、Linux、および Linux 間でシームレスに動作するソリューションが提供されます。 OSX:
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 文字を読み取ります。
ch = getch()
このアプローチはノンブロッキング入力メカニズムを提供し、開発者が単一の入力メカニズムを読み取ることができるようにします。プログラムの流れを中断したり、画面にエコーしたりすることなく、ユーザーからの文字を入力できます。これは、迅速な応答と対話型のコマンドライン アプリケーションにとって貴重なツールです。
以上がクロスプラットフォームでブロックしたりエコーしたりせずに、ユーザー入力から 1 文字を読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。