如何在控制台中删除输入问题? [复制]
Posted
技术标签:
【中文标题】如何在控制台中删除输入问题? [复制]【英文标题】:How can i delete input question in console? [duplicate] 【发布时间】:2020-11-30 20:02:34 【问题描述】:我想用新的输出覆盖输入。我想做同样的事情 (https://***.com/a/8436827/14079038) 但我需要覆盖输入。
我的代码返回:
while not addIp.__eq__(''):
ignoredIp.append(addIp)
print(addIp)
addIp = input('Would you like to add ip ? (None = no): ')
Would you like to add ip ? (None = no): 1.1.1.1
1.1.1.1
Would you like to add ip ? (None = no): 1.1.1.2
1.1.1.2
Would you like to add ip ? (None = no):
但我想要这样的东西:
10.11.100.66
10.11.100.67
10.11.100.68
10.11.100.69
10.11.100.70
Would you like to add ip ? (None = no):
【问题讨论】:
为什么是while not addIp.__eq__(''):
?为什么不正常while not addIp == '':
或更短while not addIp:
我不明白你想做什么。
如果你写在同一行,那么在print
中使用end='\r'
。但它不适用于input()
,它将\n
发送到控制台/终端,您无法停止它。也许如果你会使用像curses`这样的模块,它可以在一些控制台/终端中使用特殊代码将光标移动到任何地方,那么你可以回到上一行。
您希望屏幕上的输出仅显示 IP 地址,而不显示问题。那是你要的吗? @furas 给了你答案。
我要修改删除输入到控制台的写入
【参考方案1】:
如果你写在同一行,那么在print()
中使用end='\r'
,它不会移到下一行。
但它不适用于将\n
发送到控制台/终端的input()
,您无法阻止它。也许如果你会使用像 curses 这样的模块,它可以在某些控制台/终端中使用特殊代码将光标移动到任何地方,那么你可以回到上一行。
在 Linux 终端上,您可以使用代码 \033[nA
将 n
向上移动。
这样您就可以使用\033[1A
移动到上一行并打印文本来代替问题。
最后还需要一些空格来从较长的问题中删除文本。
addIp = '?'
while addIp:
addIp = input('Would you like to add ip ? (None = no): ')
print('\033[1A' + addIp + ' '*40)
见other codes。 Linux 使用类似的代码为文本着色。
还有一些模块应该适用于 Windows、Linux,
curses npyscreen urwid它们用于在文本模式下绘制小部件(TUI
- 文本用户界面)
并非所有控制台/终端都能尊重这些代码 - 通常 IDE/编辑器中的控制台不尊重这些代码。
【讨论】:
优秀的简单解决方案。学到了一些新东西,谢谢! 我使用的是 Windows 系统,当我写import curses
时,它让我出错:ModuleNotFoundError: No module named '_curses'
@SimonBarras 我不使用 Windows 来测试它,但 curses
作为标准模块应该适用于所有系统。但我还发现了外部模块windows-curses,也许它对你有用。此链接还链接到 curses 页面上对 Windows 用户非常有用 - Unofficial Windows Binaries for Python Extension Packages以上是关于如何在控制台中删除输入问题? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何从Opera中删除输入[type =“number”]中的箭头[复制]