【问题标题】:Delete the input line right after input has been sent发送输入后立即删除输入行
【发布时间】:2021-02-04 08:42:32
【问题描述】:

我正在寻找一种好方法来隐藏在 WINdows 上为类似聊天的系统输入的输入

现在,我写了这个

import sys

name = input("Enter your message: ")
sys.stdout.write('\r')
print(message)

但它什么也没做。

我想做这样的事情

Enter your message: Hello

Output:
Hello

那就更好了

Enter your message: Hello

Output:
Enter your message: Hello
Hello

所以最后的输出,经过一些消息会是

Hello
How are you?
I'm fine thanks.

不是

Enter your message: Hello
Hello
Enter your message: How are you?
How are you?
Enter your message: I'm fine thanks.
I'm fine thanks. 

在询问之前我已经看到了一些类似我的问题,但我没有发现任何工作,我也不能使用 os 因为它必须包含更多输入,我也尝试使用 \r 但是(因为我使用它)没有做我想做的事,在此先感谢。

【问题讨论】:

  • 您想在用户完成输入后擦除整个“输入您的姓名”行...?
  • 请上传您的代码。
  • 是的,我想删除“输入您的姓名”行和实际输入
  • 我上传了我的代码

标签: python python-3.x input output


【解决方案1】:

如果您使用命令提示符来运行您的代码,您可以这样做;

from os import system
name = input('Enter your name: ')
system('cls')
print(f'Your name is {name}')

system('cls') 在提交输入后清除控制台,因为它在提供输入后立即运行。

如果你使用的是mac;

system('clear')

【讨论】:

  • 正如我所说,我不能使用 os,因为它必须包含更多的输入和打印,如果我使用它,它将擦除所有内容,我正在寻找一种方法来仅擦除该行而不是整个程序
【解决方案2】:

如果您只想隐藏用户输入,您可以使用内置的 getpass 模块。这是为密码设计的,因此它不会显示用户在终端上键入的内容。

>>> import getpass
>>> name = getpass.getpass(prompt="name: ")
name:
>>> print(name)
Chris

【讨论】:

  • 我不是要隐藏输入,我需要在输入提交后立即隐藏整个输入行
  • 您可能想要更改问题的标题,因为它说“隐藏输入的输入”
  • 描述中自己解释了,我猜标题没有错
  • 解释得很好,以至于两个答案不符合您的要求并且问题被否决......也许不如您想象的那么好。
  • 我们都想帮助你。因此,您想删除包含有关输入内容和用户键入内容的文本的整行?这是在特定的操作系统上吗?或必须可移植以跨各种操作系统工作
【解决方案3】:

使用此代码:

import os
l = []
def main():
    empty = ""
    while True:
        message = input("Enter message: ")
        os.system("cls")
        if message == empty or message.isspace() == True:
            break
        l.append(message)
    print("Output:")
    for i in l:
        print(i)
main()

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-07
  • 2021-12-06
  • 2023-02-11
  • 1970-01-01
  • 2018-02-07
  • 1970-01-01
  • 2020-05-01
相关资源
最近更新 更多