Ich möchte den Text entfernen, der in der Konsole angezeigt wird, um nach der Eingabe entfernt zu werden. Ich muss ihn entfernen

niz = input("Insert word:")

In der Konsole heißt es also: "Wort einfügen: (Wort, das sie eingefügt haben)". Nachdem sie das Wort eingegeben haben, wird es in der Konsole gelöscht

0
anej663 18 Jän. 2019 im 16:17

4 Antworten

Beste Antwort

Wenn Sie unter Windows arbeiten, können Sie Folgendes verwenden:

import os  
user_input = input("Insert word")   
os.system('cls')  

Alternativ, wenn Sie sich in Linux / OS X befinden:

import os  
user_input = input("Insert word")
os.system('clear')  
1
Employee 18 Jän. 2019 im 13:29

Normalerweise haben Sie nicht die volle Kontrolle über das Terminal des Endbenutzers - Ihr Programm sendet einfach Text an die Standardausgabe und sobald er gedruckt wurde, unterliegt er der Kontrolle des Betriebssystems oder des Terminalemulators des Benutzers, sodass Sie dies nicht können Nimm es zurück. Es gibt jedoch drei mögliche Ansätze, die dem entsprechen, was Sie versuchen.

Die erste Möglichkeit wäre, einfach den Bildschirm zu löschen. Dies "löscht" technisch gesehen nicht, was sie eingegeben haben, da sie immer noch nach oben scrollen und den Text sehen könnten, aber zumindest wird er nicht mehr sofort auf dem Bildschirm sichtbar sein.

import os
os.system('cls')
os.system('clear')

Die zweite Möglichkeit wäre, dies als Passwortfeld zu behandeln. Dies würde verhindern, dass der Text jemals wiedergegeben wird. Wenn die Person mit der Eingabe beginnt, wird nichts auf dem Bildschirm angezeigt, aber Sie erhalten trotzdem Eingaben.

import getpass
mystring = getpass.getpass()

Mit getpass.getpass(prompt="Input: ") können Sie die Standardaufforderung (Password:) ändern.

Wenn keine dieser beiden Methoden für Sie funktioniert, würde ich die Verwendung des Moduls curses empfehlen. Dies ist ein komplizierterer Prozess, der jedoch genau das erreicht, was Sie tun möchten. Der folgende Code zeigt einfach eine Zeichenfolge an. Wenn der Benutzer die Eingabetaste drückt, wird die Zeichenfolge gelöscht. Wenn Sie die Eingabetaste erneut drücken, wird das Programm beendet. Weitere Informationen zur Verwendung von {{. X1}}.

import curses

# initialize a curses window
stdscr = curses.initscr()
curses.noecho()
stdscr.keypad(True)

win = curses.newwin(5, 40, 0, 0) # create window at top-left of terminal with height 5 and width 40
win.refresh()
mystring = "hello, world"
win.addstr(mystring) # print a string to the window
win.refresh()
win.getkey() # wait for user input
curpos = curses.getsyx() # get current cursor position
win.move(curpos[0], curpos[1]-len(mystring)) # move the cursor to the beginning of the string
win.refresh()
win.clrtoeol() # erase text from cursor to end of line
win.refresh()
win.getkey() # wait for user input

# close the curses window and return terminal to normal functionality
stdscr.keypad(False)
curses.echo()
curses.endwin()
1
JmaJeremy 18 Jän. 2019 im 14:25

Sie können dies über den Terminalcode tun. Für Windows tun Sie

clear = lambda:os.system('cls')

Für Linux machst du

clear = lambda:os.system('clear')

Und Sie müssen nur clear () aufrufen

0
Steven97102 18 Jän. 2019 im 13:25

Sie können eine echofreie Eingabefunktion wie getpass verwenden, um das Löschen der Benutzereingaben zu vermeiden:

import getpass

niz = getpass.getpass(prompt="Insert word:")

print(f'You entered: {niz}')

Ausgabe:

Insert word:
You entered: secret
0
DatHydroGuy 18 Jän. 2019 im 13:35