228 votes

La façon correcte de mettre en pause un programme Python

J'ai utilisé la fonction d'entrée comme un moyen de mettre mes scripts en pause.

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

existe-t-il un moyen formel de le faire ?

3 votes

Travailler dans un débogueur et utiliser des points d'arrêt ?

288voto

mhawke Points 10385

Cela me semble correct (ou raw_input() dans Python 2.X). Vous pouvez également utiliser time.sleep() si vous voulez faire une pause pendant un certain nombre de secondes.

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

1 votes

Je connais la fonction "sleep" du module temporel, mais que faire si j'ai un long bloc de texte que je veux faire lire à l'utilisateur ?

9 votes

Il suffit d'utiliser print pour afficher le long bloc de texte, puis input() ou raw_input('Press <ENTER> to continue') en fonction de votre version de Python.

10 votes

Pour un long bloc de texte, il est préférable d'utiliser input() (ou raw_input() sur Python 2.x) pour inviter l'utilisateur, plutôt qu'un délai. Les lecteurs rapides ne voudront pas attendre un délai, les lecteurs lents pourraient vouloir plus de temps sur le délai, quelqu'un pourrait être interrompu pendant la lecture et vouloir beaucoup plus de temps, etc. De plus, si une personne utilise souvent le programme, elle peut s'habituer à son fonctionnement et ne plus avoir besoin de lire le long texte. Il est simplement plus convivial de laisser l'utilisateur contrôler la durée d'affichage du bloc de texte pour la lecture.

43voto

Chan Tzish Points 958

Pour Windows uniquement utiliser :

import os
os.system("pause")

44 votes

Cette solution est spécifique à Windows, alors que toutes les réponses existantes sont indépendantes de la plate-forme.

3 votes

Pourquoi python implémenterait-il une fonction spécifique au système d'exploitation ? Cela n'a aucun sens.

2 votes

Os.system() appelle une fonction système appelée "pause" - un ubuntu par exemple ne sait pas ce qu'est "pause", donc il retournera avec : sh : 1 : pause : non trouvé

22voto

Cether Points 491

J'ai donc trouvé que cela fonctionnait très bien dans mes efforts de codage. J'ai simplement a créé une fonction au tout début de mon programme,

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

et maintenant je peux utiliser le pause() chaque fois que j'en ai besoin, comme si j'écrivais un fichier batch. Par exemple dans un programme tel que celui-ci :

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

Bien entendu, ce programme n'a pas d'objectif et n'est qu'un exemple, mais vous pouvez comprendre ce que je veux dire.

NOTE : Pour Python 3, vous devrez utiliser input à l'opposé de raw_input

2 votes

En quoi cela diffère-t-il de ce qui est indiqué dans la question ?

18voto

8bitwide Points 1215

Je suppose que vous voulez faire une pause sans entrée

Utilisez

time.sleep(secs)

10voto

olean Points 107

J'ai eu une question similaire et j'utilisais le signal :

import signal

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

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

Vous enregistrez donc un gestionnaire pour le signal SIGINT et mettez en pause en attendant tout signal. Maintenant, depuis l'extérieur de votre programme (par exemple dans bash), vous pouvez exécuter kill -2 <python_pid> qui enverra le signal 2 (c'est-à-dire SIGINT) à votre programme python. Votre programme appellera votre gestionnaire enregistré et poursuivra son exécution.

4 votes

Notez que ce système n'est pas portable d'une plate-forme à l'autre, par exemple sous Windows, il n'y a pas d'accès à l'information. signal.pause .

1 votes

Sur quelle plateforme l'avez-vous essayé ? Sur Linux ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X