我一直在使用输入函数作为暂停脚本的一种方式:

print("something")
wait = input("Press Enter to continue.")
print("something")

有正式的方式吗?


当前回答

user12532854建议使用keyboard.readkey(),但它需要特定的键(我试图在没有输入参数的情况下运行它,但它最终立即返回'enter',而不是等待击键)。

通过以不同的方式表达问题(在python中寻找getchar()等效),我发现在探索由这个答案提示的readchar包后,readchar.readkey()做到了这一点。

import readchar
readchar.readkey()

其他回答

我有一个类似的问题,我使用信号:

import signal

def signal_handler(signal_number, frame):
    print "Proceed ..."

signal.signal(signal.SIGINT, signal_handler)
signal.pause()

因此,您为信号SIGINT注册了一个处理程序,并暂停等待任何信号。现在从你的程序外部(例如在bash中),你可以运行kill -2 <python_pid>,这将向你的python程序发送信号2(即SIGINT)。您的程序将调用已注册的处理程序并继续运行。

user12532854建议使用keyboard.readkey(),但它需要特定的键(我试图在没有输入参数的情况下运行它,但它最终立即返回'enter',而不是等待击键)。

通过以不同的方式表达问题(在python中寻找getchar()等效),我发现在探索由这个答案提示的readchar包后,readchar.readkey()做到了这一点。

import readchar
readchar.readkey()

我认为停止执行的最好方法是time.sleep()函数。

如果你只需要在某些情况下暂停执行,你可以简单地实现一个If语句,就像这样:

if somethinghappen:
    time.sleep(seconds)

您可以让else分支为空。

非常简单:

raw_input("Press Enter to continue ...")
print("Doing something...")

我在Python 2和Python 3中使用以下代码暂停代码执行,直到用户按下Enter

import six

if six.PY2:
    raw_input("Press the <Enter> key to continue...")
else:
    input("Press the <Enter> key to continue...")