파이썬 프로그램을 일시 정지하는 올바른 방법


161

input스크립트를 일시 중지하는 방법으로 함수를 사용하고 있습니다.

print("something")
wait = input("PRESS ENTER TO CONTINUE.")
print("something")

이것을 수행하는 공식적인 방법이 있습니까?


2
디버거에서 작업하고 중단 점을 사용합니까?
gddc

답변:


219

나에게 잘 보인다 (또는 raw_input()Python 2.X에서). 또는 time.sleep()특정 시간 (초) 동안 일시 중지하려는 경우 사용할 수 있습니다 .

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

1
시간 모듈의 절전 기능에 대해 알고 있지만 긴 텍스트 블록이 있으면 사용자가 읽을 수 있도록하려면 어떻게해야합니까?
RandomPhobia

7
print긴 텍스트 블록을 표시 한 다음 input()또는 사용중인 raw_input('Press <ENTER> to continue')Python 버전에 맞게 간단히 사용 하십시오.
mhawke

8
긴 텍스트 블록의 경우 시간 지연보다는 사용자에게 프롬프트하는 데 input()(또는 raw_input()Python 2.x에서) 가장 좋습니다 . 빠른 독자는 지연을 기다리지 않고, 느린 독자는 지연에 더 많은 시간을 원하고, 누군가 읽는 동안 중단되어 더 많은 시간을 원할 수 있습니다. 또한 누군가가 프로그램을 많이 사용하면 그녀는 그것이 작동하는 방식에 익숙해 질 수 있으며 긴 텍스트를 읽을 필요조차 없습니다. 텍스트 블록을 읽는 데 얼마나 오래 표시되는지 사용자가 제어 할 수있게하는 것이 더 친숙합니다.
steveha

30

창에만 사용하십시오 :

import os
os.system("pause")

23
이것은 Windows마다 다르지만 기존의 모든 답변은 플랫폼 독립적입니다.
lvc


17

그래서, 나는 이것이 코딩 작업에서 잘 작동한다는 것을 알았습니다. 프로그램 시작시 간단히 함수만들었습니다.

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


7

나는 비슷한 질문을했고 신호를 사용하고 있었다 :

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)가 전송됩니다. 프로그램은 등록 된 핸들러를 호출하고 실행을 계속합니다.


2
예를 들어, 플랫폼간에 이식성이 없습니다. Windows에는 없습니다 signal.pause.
kyrill

7

python사용자가 누를 때까지 2와 3에 다음을 사용하여 코드 실행을 일시 중지합니다.ENTER

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

5

mhawkesteveha 의 의견에서 지적 했듯이이 정확한 질문에 대한 가장 좋은 대답은 다음과 같습니다.

긴 텍스트 블록의 경우 시간 지연보다는 사용자에게 프롬프트하는 데 input('Press <ENTER> to continue')(또는 raw_input('Press <ENTER> to continue')Python 2.x에서) 가장 좋습니다 . 빠른 독자는 지연을 기다리지 않고, 느린 독자는 지연에 더 많은 시간을 원하고, 누군가 읽는 동안 중단되어 더 많은 시간을 원할 수 있습니다. 또한 누군가가 프로그램을 많이 사용하면 그녀는 그것이 작동하는 방식에 익숙해 질 수 있으며 긴 텍스트를 읽을 필요조차 없습니다. 텍스트 블록을 읽는 데 얼마나 오래 표시되는지 사용자가 제어 할 수있게하는 것이 더 친숙합니다.


5

매우 간단합니다 :

raw_input("Press Enter to continue ...")
exit()

이 방법을 조금 사용했지만 pause () 함수로 사용하는 것이 좋으며 exit ()가 필요하지 않다고 생각합니다. def pause () : return raw_input ( "계속하려면 Enter를 누르십시오 ...")
jacktrader

NameError: name 'raw_input' is not defined
bers


0

실행을 중지하는 가장 좋은 방법은 time.sleep () 함수라고 생각합니다. 특정 경우에만 실행을 일시 중단 해야하는 경우 다음과 같이 if 문을 간단히 구현할 수 있습니다.

if somethinghappen:
    time.sleep(seconds)

else 분기를 비워 둘 수 있습니다.


0

나는이 솔른을 좋아한다고 생각합니다.

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

사용자가 입력 한 내용을 숨기므로 여기에서 입력이 사용되지 않음을 명확히하는 데 도움이됩니다.

그러나 OSX 플랫폼에서는 혼동 될 수있는 키가 표시됩니다.

내가 말했듯이 열쇠를 보여줍니다.


아마도 가장 좋은 해결책은 read -s전화를 걸지 않고 getpass 모듈과 비슷한 것을 수행하는 것 입니다. fg 색상을 bg와 일치시킬 수 있습니까?


0

이 방법을 사용하면 다음과 같이 지정한 키를 눌러 프로그램을 다시 시작할 수 있습니다.

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'):  # same, you can put any key you like instead of 'space'
        break

참고 : keyboard쉘 또는 cmd에 이것을 작성하여 간단히 모듈 을 설치할 수 있습니다 .

pip install keyboard


-1

크로스 파이썬 2/3 호환성 input을 위해 six라이브러리 를 통해 사용할 수 있습니다 .

import six
six.moves.input( 'Press the <ENTER> key to continue...' )
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.