Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Membaca Aksara Tunggal daripada Input Pengguna Cross-Platform?

Bagaimanakah Saya Boleh Membaca Aksara Tunggal daripada Input Pengguna Cross-Platform?

Susan Sarandon
Susan Sarandonasal
2024-12-21 05:10:151053semak imbas

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

Mendapatkan Input Aksara Tunggal Cross-Platform

Membaca satu aksara daripada input pengguna berguna dalam pelbagai senario. Untuk mencapai matlamat ini, anda boleh menggunakan penyelesaian merentas platform berikut:

Tapak ActiveState Recipes menyediakan resipi komprehensif yang menyasarkan sistem pengendalian yang berbeza:

  • Windows :

    • Import modul msvcrt dan gunakan msvcrt.getch().
  • Linux dan OSX:

    • Tetapkan input standard kepada mod mentah menggunakan tty. setraw() untuk melumpuhkan penimbalan.
    • Baca satu aksara menggunakan sys.stdin.read(1).
    • Pulihkan tetapan asal selepas membaca aksara.

Coretan kod yang disediakan menggambarkan pelaksanaan ini:

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()

Hanya memanggil getch() akan memberi anda satu aksara tanpa sebarang penimbalan atau bergema ke terminal.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membaca Aksara Tunggal daripada Input Pengguna Cross-Platform?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn