python - 用户使用 input() 输入文本后从控制台中删除提示
问题描述
是否可以删除提示和用户在使用时键入的文本input()
?我在 Windows 10 上使用 cmd 并且更喜欢跨平台工作的解决方案,但我并不介意。
第一次尝试
使用代码:
user_input = input("Enter some text: ")
print("You just entered " + user_input)
产生:
Enter some text: hello
You just entered hello
但我想:
Enter some text: hello
接着:
You just entered hello
第二次尝试
我使用了 getpass 模块,但它隐藏了用户输入的内容,因为它是为密码设计的。我查看了getpass2
这里的代码,发现它使用了getch()
来自msvcrt
. 我尝试使用类似的方法,但没有奏效。这段代码:
import msvcrt
prompt = "Enter some text: "
user_input = ""
print(prompt, end="\r")
current_character = ""
while current_character != "\r":
current_character = msvcrt.getch()
user_input += str(current_character, "utf8")
print(prompt + user_input, end="\r")
print("You entered" + user_input)
产生这个输出:
Enter some text: h e l l o
然后当我按下回车键时:
nter some text: h e l l o
它还允许用户使用退格键删除提示。
第三次尝试
我知道我可以os.system("cls")
用来清除控制台中的所有内容,但这会删除之前控制台中的文本。例如,这段代码:
import os
print("foo")
user_input = input("Enter some text: ")
os.system("cls")
print("You just entered " + user_input)
删除在foo
输入之前打印到控制台的内容。如果我要问的不是直接可能的,是否有一种解决方法可以将控制台中的文本保存到变量中,然后在用户输入后清除控制台并重新打印控制台中的文本?
解决方案
这绝对不是最优解;然而,为了回应
是否有一种解决方法可以将控制台中的文本保存到变量中
,您可以继续将所需的文本附加到变量中,并按照您的建议每次重新打印。同样,我不建议您将其作为您的实际实现,但是当我们等待有人提出正确的方法时......
import os
to_print = ""
to_print += "foo" + "\n"
print(to_print)
user_input = input("Enter some text: ")
os.system("cls")
to_print += "You just entered " + user_input + "\n"
print(to_print)
推荐阅读
- c# - 如何在 C# 中获取精确显示器的 Dpi 值
- r - 是一个字符串,等于给定分组中的任何先前滞后
- r - 如何在 R 中拆分数据?
- python - Python Numba 使用集合字典优化函数
- python - Python 的 Lmfit 包没有收敛到有意义的结果
- html - HTML表格很大时响应时间慢
- html - 右对齐绝对定位标题内的元素
- sql-server - 通过 VBA 访问 Access 2010 中的数据链接属性
- python - matplotlib 不会将图形保存为 raspberrypi 上的文件
- c# - Microsoft Service Fabric 上的容器编排失败