201

我一直在使用该input函数来暂停我的脚本:

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

有没有正式的方法可以做到这一点?

4

16 回答 16

258

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

import time
print("something")
time.sleep(5.5)    # Pause 5.5 seconds
print("something")
于 2012-07-19T00:32:24.190 回答
41

仅适用于 Windows,请使用:

import os
os.system("pause")
于 2015-10-02T14:21:14.330 回答
21

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

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()

现在显然这个程序没有目标,只是为了举例,但你可以准确地理解我的意思。

input注意:对于Python 3,您需要使用raw_input

于 2016-01-17T20:25:02.940 回答
18

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

利用:

时间.睡眠(秒)

于 2012-07-19T00:33:05.630 回答
9

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

import signal

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

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

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

于 2015-10-07T13:21:03.883 回答
7

我对 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...")
于 2018-01-14T08:42:28.413 回答
7
print ("This is how you pause")

input()

于 2018-01-05T17:05:21.903 回答
5

正如mhawkesteveha的评论所指出的,这个确切问题的最佳答案是:

对于较长的文本块,最好使用input('Press <ENTER> to continue')(或raw_input('Press <ENTER> to continue')在 Python 2.x 上)提示用户,而不是延时。快读者不想等待延迟,慢读者可能想要更多的延迟时间,有人可能在阅读时被打断,想要更多的时间,等等。另外,如果有人经常使用这个程序,他/她可能会习惯它的工作方式,甚至不需要阅读长文本。让用户控制文本块显示多长时间以供阅读更友好。

于 2015-08-04T08:54:01.743 回答
5

很简单:

raw_input("Press Enter to continue ...")
print("Doing something...")
于 2017-06-09T01:26:33.230 回答
2

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

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

这会产生一个解释器,其行为几乎与真正的解释器完全相同,包括当前上下文,只有输出:

暂停。按 ^D (Ctrl+D) 继续。
>>>

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

import pdb
pdb.set_trace() # Python 2

或者

breakpoint() # Python 3
于 2020-07-28T15:41:45.033 回答
2

跨平台方式;无处不在

import os, sys

if sys.platform == 'win32':
    os.system('pause')
else:
    input('Press any key to continue...')
于 2020-07-19T18:21:51.027 回答
2

通过这种方法,您可以通过按下您指定的任何指定键来恢复您的程序:

import keyboard
while True:
    key = keyboard.read_key()
    if key == 'space':  # You can put any key you like instead of 'space'
        break

相同的方法,但以另一种方式:

import keyboard
while True:
    if keyboard.is_pressed('space'):  # The same. you can put any key you like instead of 'space'
        break

注意:您可以keyboard简单地通过在 shell 或 cmd 中编写以下代码来安装模块:

pip install keyboard
于 2020-04-10T20:16:31.723 回答
0

我想我喜欢这个解决方案:

import getpass
getpass.getpass("Press Enter to Continue")

它隐藏了用户输入的任何内容,这有助于澄清此处未使用输入。

但请注意 OS X 平台。它显示一个可能令人困惑的键。

它显示了一个键,就像我说的


可能最好的解决方案是自己做一些类似于getpass模块的事情,而无需read -s拨打电话。也许使前景色与背景相匹配?

于 2019-03-23T00:16:20.167 回答
0

在 Linux 中,您可以kill -TSTP <pid>向后台发出并停止进程。所以,它就在那里,但不消耗 CPU 时间。

然后,kill -CONT <pid>它关闭并再次运行。

于 2018-04-09T21:31:55.527 回答
0

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

如果您只需要在某些情况下暂停执行,您可以简单地实现一个if语句,如下所示:

if somethinghappen:
    time.sleep(seconds)

您可以将else分支留空。

于 2017-02-19T15:24:05.120 回答
-1

对于跨 Python 2/3 兼容性,您可以input通过six库使用:

import six
six.moves.input( 'Press the <ENTER> key to continue...' )
于 2019-06-29T17:44:00.437 回答