Heim Backend-Entwicklung Python-Tutorial So beenden Sie Python durch Drücken einer beliebigen Taste unter Linux

So beenden Sie Python durch Drücken einer beliebigen Taste unter Linux

Feb 24, 2017 pm 03:48 PM

Eines Tages fragte ein Klassenkamerad in Python: Wenn ich Eingabe oder Raw_Input verwende, muss ich nach der Eingabe die Eingabetaste drücken, um den Eingabewert zu erhalten. Wie kann ich also Funktionen wie Beenden und Anhalten mit einer beliebigen Taste implementieren? ?Ich wusste es damals noch nicht, weil ich Python schon lange nicht mehr kennengelernt habe, hauptsächlich unter Linux.

Natürlich wird es unter Windows etwas einfacher sein. Wenn Sie die Python-Umgebung unter Windows installieren, heißt ein standardmäßig mitgeliefertes Modul msvcrt, importieren Sie msvcrt und rufen Sie dann msvcrt auf. getch() das ist Can. Der nächste Schritt besteht darin, die Python-Version unter Linux zu implementieren und zum Beenden eine beliebige Taste zu drücken.

Als ich Python zum ersten Mal lernte, wollte ich immer ein Programm implementieren, das zum Fortfahren/Beenden eine beliebige Taste drücken kann (vergiftet durch .bat), aber ich konnte es kürzlich nicht schreiben, als ich Unix lernte C, ich habe herausgefunden, dass es über die termios.h-Bibliothek implementiert werden kann, und habe festgestellt, dass Python auch über diese Bibliothek verfügt, also habe ich schließlich ein Programm wie dieses geschrieben:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import os
import sys
import termios
def press_any_key_exit(msg):
# 获取标准输入的描述符
fd = sys.stdin.fileno()
# 获取标准输入(终端)的设置
old_ttyinfo = termios.tcgetattr(fd)
# 配置终端
new_ttyinfo = old_ttyinfo[:]
# 使用非规范模式(索引3是c_lflag 也就是本地模式)
new_ttyinfo[3] &= ~termios.ICANON
# 关闭回显(输入不会被显示)
new_ttyinfo[3] &= ~termios.ECHO
# 输出信息
sys.stdout.write(msg)
sys.stdout.flush()
# 使设置生效
termios.tcsetattr(fd, termios.TCSANOW, new_ttyinfo)
# 从终端读取
os.read(fd, 7)
# 还原终端设置
termios.tcsetattr(fd, termios.TCSANOW, old_ttyinfo)
if __name__ == "__main__":
press_any_key_exit("按任意键继续...")
press_any_key_exit("按任意键退出...")
Nach dem Login kopieren

Weitere Informationen zu Termios finden Sie im Linux-Handbuch:

man 3 termios
Nach dem Login kopieren

Fügen Sie außerdem das hinzu drei Modi des *nix-Terminals (Auszug aus <Unix-Linux Programming Practice Tutorial>)

Kanonischer Modus

Der kanonische Modus, auch gekochter Modus genannt, ist weit verbreitet Vom Fahrer eingegebene Zeichen werden im Puffer gespeichert und erst dann werden diese gepufferten Zeichen an das Programm gesendet. Die gepufferten Daten ermöglichen es dem Treiber, die grundlegendsten Bearbeitungsfunktionen auszuführen Die diesen Funktionen zugewiesenen Funktionen werden im Treiber festgelegt und können über den Befehl stty oder den Systemaufruf tcsetattr geändert werden

Nicht-kanonischer Modus

Wenn Pufferung und Bearbeitung aktiviert sind Wenn die Verbindung deaktiviert ist, wird die Verbindung in den nicht-kanonischen Modus versetzt. Der Terminalprozessor führt weiterhin bestimmte Zeichenverarbeitungen durch, z. B. die Verarbeitung von Strg-C und der Zeilenumbruchkonvertierung zwischen Symbolen. Die Bearbeitungstasten haben jedoch keine Bedeutung, sodass die entsprechende Eingabe als a behandelt wird normales Dateneingabeprogramm und muss die Bearbeitungsfunktion selbst implementieren

Rohmodus

Wenn die gesamte Verarbeitung ausgeschaltet ist, leitet der Treiber die Eingabe direkt an das Programm weiter. und die Verbindung wird im Rohmodus sein.

Die oben beschriebene Implementierungsmethode zum Beenden in Python wird Ihnen hoffentlich weiterhelfen Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht. Der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte mich auch bei allen für Ihre Unterstützung auf der chinesischen PHP-Website bedanken!

Weitere verwandte Artikel zum Beenden von Python durch Drücken einer beliebigen Taste unter Linux finden Sie auf der chinesischen PHP-Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden Mar 05, 2025 am 09:58 AM

So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden

Wie benutze ich eine schöne Suppe, um HTML zu analysieren? Wie benutze ich eine schöne Suppe, um HTML zu analysieren? Mar 10, 2025 pm 06:54 PM

Wie benutze ich eine schöne Suppe, um HTML zu analysieren?

Bildfilterung in Python Bildfilterung in Python Mar 03, 2025 am 09:44 AM

Bildfilterung in Python

Wie führe ich ein tiefes Lernen mit Tensorflow oder Pytorch durch? Wie führe ich ein tiefes Lernen mit Tensorflow oder Pytorch durch? Mar 10, 2025 pm 06:52 PM

Wie führe ich ein tiefes Lernen mit Tensorflow oder Pytorch durch?

Einführung in die parallele und gleichzeitige Programmierung in Python Einführung in die parallele und gleichzeitige Programmierung in Python Mar 03, 2025 am 10:32 AM

Einführung in die parallele und gleichzeitige Programmierung in Python

Serialisierung und Deserialisierung von Python -Objekten: Teil 1 Serialisierung und Deserialisierung von Python -Objekten: Teil 1 Mar 08, 2025 am 09:39 AM

Serialisierung und Deserialisierung von Python -Objekten: Teil 1

Mathematische Module in Python: Statistik Mathematische Module in Python: Statistik Mar 09, 2025 am 11:40 AM

Mathematische Module in Python: Statistik

So implementieren Sie Ihre eigene Datenstruktur in Python So implementieren Sie Ihre eigene Datenstruktur in Python Mar 03, 2025 am 09:28 AM

So implementieren Sie Ihre eigene Datenstruktur in Python

See all articles