我有一个python脚本(用作命令行界面),等待使用input
函数的输入查询。
while True:
query = input('Enter query: ')
thread = Thread(target=exec_query, args=(query,))
thread.start()
同时,辅助线程正在执行此类查询。使用print
函数将查询的输出打印到命令行。
def exec_query(query_data):
# doing a complex data processing ...
print('results of the query')
因此,打印功能的输出写在主线程中第二次执行打印功能所打印的前缀'Enter query: '
的后面:
Enter query: {the query}
Enter query: results of the query
我想实现将打印功能的输出插入到前缀'Enter query: '
之前(或者看起来是这样):
Enter query: {the query}
results of the query
Enter query:
我已经通过几种方法,但是没有找到一个好的解决方案。一种workaround是通过添加'\x1b[1A\x1b[2K'
来删除前缀,并在打印查询执行的输出后将其写回。这里的问题是,我不知道如何重建此时用户可能已经插入的不完整的用户输入(查询)。
str
获得bytes.decode()
msvcrt.getch
在.getche
内使用_GetchWindows.__call__
msvcrt
未全局导入做类似的事情
while input != '\r': # or some other return char, depends
input += getch().decode()
和
# in front of erase
while msvcrt.kbhit(): # read while there is something to read
remember_input += getch().decode()
print(erase)
# and than you should return remember_input to stdin somehow (try msvcrt.putch)
由于复杂性(使用线程编写(我是新手),输入/输出控制(因为我的vsc终端每次讨厌我),以及可能还有更多原因,我自己都没有这样做想累了),但我确定你不会退出
编辑:哦,是的我忘了提您可能也想写自己的print
和input
,在这种情况下,有用的东西将是input(prompt, remember_string)
提示将无法通过退格键删除,并且记住字符串将