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

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

有正式的方式吗?


当前回答

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

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)。您的程序将调用已注册的处理程序并继续运行。

其他回答

这对我来说似乎很好(或Python 2.X中的raw_input())。或者,如果想要暂停特定的秒数,也可以使用time.sleep()。

import time
print("something")
time.sleep(5.5)    # Pause 5.5 seconds
print("something")

所以,我发现这在我的编程工作中非常有效。我只是在程序的最开始创建了一个函数,

def pause():
    programPause = raw_input("Press the <ENTER> key to continue...")

现在我可以在任何需要的时候使用pause()函数,就像我在写一个批处理文件一样。例如,在这样的程序中:

import os
import system

def pause():
    programPause = raw_input("Press the <ENTER> key to continue...")

print("Think about what you ate for dinner last night...")
pause()

很明显,这个项目没有目标,只是举个例子,但你可以准确地理解我的意思。

注意:对于Python 3,你需要使用input而不是raw_input

我假设您希望在没有输入的情况下暂停。

Use:

time . sleep(秒)

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

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

if somethinghappen:
    time.sleep(seconds)

您可以让else分支为空。

我和喜欢简单解决方案的非程序员一起工作:

import code
code.interact(banner='Paused. Press ^D (Ctrl+D) to continue.', local=globals()) 

这产生了一个几乎完全像真正的解释器一样的解释器,包括当前上下文,只有输出:

Paused. Press ^D (Ctrl+D) to continue.
>>>

Python调试器也是暂停的好方法。

import pdb
pdb.set_trace() # Python 2

or

breakpoint() # Python 3