暂停 Python 程序的正确方法

问题描述 投票:0回答:17

我一直在使用

input
函数来暂停我的脚本:

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

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

python sleep
17个回答
280
投票

seems 对我来说很好(或

raw_input()
在 Python 2.X 中)。或者,如果你想暂停一定的秒数,你可以使用
time.sleep()

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

42
投票

仅适用于 Windows,使用:

import os
os.system("pause")

21
投票

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

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


18
投票

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

用途:

time.sleep(秒)


10
投票

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

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


8
投票

我对 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...")

8
投票
print ("This is how you pause")

input()


7
投票

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

Python 3.x:

input('Press <ENTER> to continue')

Python 2.x:

raw_input('Press <ENTER> to continue')

对于长文本块,最好使用

input('Press <ENTER> to continue')
(或
raw_input('Press <ENTER> to continue')
Python 2.x) 提示用户,而不是时间延迟。快速阅读器 不想等待延迟,慢读者可能需要更多时间 延迟,有人可能在阅读时被打断并想要 更多时间等。此外,如果有人经常使用该程序,他/她 可能会习惯它的工作原理,甚至不需要阅读长篇大论 文本。让用户控制阻塞多长时间更友好 显示文本以供阅读。

轶事:曾经有一段时间程序使用“按[ANY]键继续”。这失败了,因为人们抱怨他们在键盘上找不到任何键:)


5
投票

很简单:

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

3
投票

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

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

注意:您只需在 shell 或 cmd 中编写即可安装

keyboard
模块:

pip install keyboard

3
投票

跨平台方式;无处不在

import os, sys

if sys.platform == 'win32':
    os.system('pause')
else:
    input('Press any key to continue...')

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

1
投票

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

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

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

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


最好的解决方案可能是自己做一些类似于 getpass 模块的事情,而不用调用

read -s
。也许让前景色与背景相匹配?


1
投票

user12532854 建议 使用

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

通过以不同的方式表达问题(在 python 中寻找

getchar()
equivalent),我发现 readchar.readkey() 在探索由这个
answer
提示的 readchar 包后可以解决问题。

import readchar
readchar.readkey()

0
投票

为了跨 Python 2/3 兼容性,您可以通过

input
库使用
six

import six
six.moves.input( 'Press the <ENTER> key to continue...' )

0
投票

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

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

if somethinghappen:
    time.sleep(seconds)

您可以将 else 分支留空。


0
投票

关于 POSIX:

import signal

try:
    signal.pause()
except KeyboardInterrupt:
    pass
finally:
    print("Waiting time is over!")
© www.soinside.com 2019 - 2024. All rights reserved.