首頁 >後端開發 >Python教學 >如何跨平台讀取使用者輸入的單一字元?

如何跨平台讀取使用者輸入的單一字元?

Susan Sarandon
Susan Sarandon原創
2024-12-21 05:10:15988瀏覽

How Can I Read a Single Character from User Input Cross-Platform?

跨平台取得單一字元輸入

從使用者輸入中讀取單一字元在各種場景下都很有用。為此,您可以利用以下跨平台解決方案:

ActiveState Recipes 網站提供了不同作業系統的綜合配方:

  • Windows :

    • 導入msvcrt模組並使用msvcrt.getch().
  • Linux 和OSX:

      Linux 和OSX:
    • 使用tty將標準輸入設定為原始模式。 setraw() 禁用緩衝。
    • 使用讀取單一字元sys.stdin.read(1).
    讀取字元後恢復原始設定。

class _Getch:
    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() 即可獲得單個字符,而無需任何緩衝或回顯終端。

以上是如何跨平台讀取使用者輸入的單一字元?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn