Python 运行时错误:can';t重新输入readline
我正在制作一个Python3应用程序,它有一个用户输入命令的提示。我正在macOS Sierra上运行Python 3.5 我试图通过在提示符中键入Python 运行时错误:can';t重新输入readline,python,runtime-error,Python,Runtime Error,我正在制作一个Python3应用程序,它有一个用户输入命令的提示。我正在macOS Sierra上运行Python 3.5 我试图通过在提示符中键入exit来防止使用Ctrl+C退出,并让用户退出 我使用以下方法进行此操作: 但是,当再次提示用户时,我得到运行时错误:无法重新输入readline 有没有办法解决这个问题 这是我的代码: import interpret import signal def SigIntHand(SIG, FRM): print("\nUse 'exit'
exit
来防止使用Ctrl+C退出,并让用户退出
我使用以下方法进行此操作:
但是,当再次提示用户时,我得到运行时错误:无法重新输入readline
有没有办法解决这个问题
这是我的代码:
import interpret
import signal
def SigIntHand(SIG, FRM):
print("\nUse 'exit' to exit.")
prompt()
signal.signal(signal.SIGINT, SigIntHand)
version = ("v0.0.3")
class CommandError(Exception):
pass
def prompt():
try:
task = input("Einstein " + version + " > ")
except RuntimeError:
task = input("Einstein " + version + " > ")
try:
execute(task)
except CommandError as e:
print(e)
prompt()
def execute(command):
command = command.lower()
interpret.interpret(command)
prompt()
explorate.exploration(“命令”)
由main.py
调用,以执行命令command
(如果存在)
任何帮助都将不胜感激。谢谢 您的控制流看起来有点奇怪。要处理用户多次按下Ctrl+C
,应使用循环不断请求输入
此外,您还可以在Python中捕获一个键盘中断
,每次点击Ctrl+C
,它都会被触发。这比处理信号处理程序要容易一点
version = ("v0.0.3")
class CommandError(Exception):
pass
def prompt():
try:
return input("Einstein " + version + " > ")
except KeyboardInterrupt:
print('') # Go to the next line so printing looks better.
return None
def force_prompt():
task = None
while task is None:
task = prompt()
return task
def get_and_execute_command():
task = force_prompt()
try:
execute(task)
except CommandError as e:
print(e)
def execute(command):
command = command.lower()
print('Command: %s' % command)
get_and_execute_command()
除了提示符
,您希望在第一次尝试时抛出什么运行时错误?我不希望任何原因导致它,但它仍然会发生。我刚刚得到RuntimeError:无法重新进入readline
。用户按Ctrl+C
会触发它,但我不确定原因。添加一个try
…,除了可以捕获一次,但是如果用户再次按下Ctrl+C
,同样的错误会弹出。我无法通过将explorate.explorate替换为os.system
来重现,这正是我所期望的,你能试着发布一个吗?我没有捕捉到键盘中断的原因是(至少对我来说)它不会阻止用户使用Ctrl+C退出
-我可以打印出下一次使用“退出”退出但在那之后它仍然存在。