Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 运行时错误:can';t重新输入readline_Python_Runtime Error - Fatal编程技术网

Python 运行时错误:can';t重新输入readline

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'

我正在制作一个Python3应用程序,它有一个用户输入命令的提示。我正在macOS Sierra上运行Python 3.5

我试图通过在提示符中键入
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退出
-我可以
打印出下一次使用“退出”退出但在那之后它仍然存在。