Ik heb de functie input
gebruikt om mijn scripts te pauzeren:
print("something")
wait = input("Press Enter to continue.")
print("something")
Is er een formele manier om dit te doen?
Antwoord 1, autoriteit 100%
Het lijkt me prima (of raw_input()
in Python 2.X). U kunt ook time.sleep()
gebruiken als u een bepaald aantal seconden wilt pauzeren.
import time
print("something")
time.sleep(5.5) # Pause 5.5 seconds
print("something")
Antwoord 2, autoriteit 15%
Alleen voor Windows, gebruik:
import os
os.system("pause")
Antwoord 3, autoriteit 8%
Dus ik merkte dat dit heel goed werkte bij mijn coderingsinspanningen. Ik heb gewoon een functie gemaakthelemaal aan het begin van mijn programma,
def pause():
programPause = raw_input("Press the <ENTER> key to continue...")
en nu kan ik de functie pause()
gebruiken wanneer ik maar wil, net alsof ik een batchbestand aan het schrijven ben. Bijvoorbeeld, in een programma als dit:
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()
Dit programma heeft natuurlijk geen doel en is slechts een voorbeeld, maar je kunt precies begrijpen wat ik bedoel.
OPMERKING: voor Python 3 moet je input
gebruiken in plaats van raw_input
Antwoord 4, autoriteit 7%
Ik neem aan dat je wilt pauzeren zonder invoer.
Gebruik:
Antwoord 5, autoriteit 4%
Ik heb een soortgelijke vraag gehad en ik gebruikte signaal:
import signal
def signal_handler(signal_number, frame):
print "Proceed ..."
signal.signal(signal.SIGINT, signal_handler)
signal.pause()
Dus je registreert een handler voor het sein SIGINT en wacht op een signaal. Nu kun je van buiten je programma (bijv. in bash), kill -2 <python_pid>
uitvoeren, dat signaal 2 (d.w.z. SIGINT) naar je python-programma stuurt. Uw programma zal uw geregistreerde handler aanroepen en verder gaan.
Antwoord 6, autoriteit 3%
Ik gebruik het volgende voor Python 2 en Python 3 om de uitvoering van de code te pauzeren totdat de gebruiker op Enter
drukt
import six
if six.PY2:
raw_input("Press the <Enter> key to continue...")
else:
input("Press the <Enter> key to continue...")
Antwoord 7, autoriteit 2%
Zoals aangegeven door mhawkeen steveha‘s opmerkingen, zou het beste antwoord op deze exacte vraag zijn:
Voor een lang tekstblok kunt u het beste
input('Press <ENTER> to continue')
(ofraw_input('Press <ENTER> to continue')
aan
Python 2.x) om de gebruiker te vragen, in plaats van een vertraging. Snelle lezers
willen niet wachten op een vertraging, trage lezers willen misschien meer tijd aan
de vertraging, kan iemand worden onderbroken tijdens het lezen en wil hij een
veel meer tijd, enz. Ook als iemand het programma veel gebruikt, zal hij/zij
kan wennen aan hoe het werkt en niet eens de lange hoeft te lezen
tekst. Het is gewoon vriendelijker om de gebruiker te laten bepalen hoe lang de blokkering is
tekst wordt weergegeven om te lezen.
Antwoord 8, autoriteit 2%
Print ("This is how you pause")
input()
Antwoord 9, autoriteit 2%
Heel eenvoudig:
raw_input("Press Enter to continue ...")
print("Doing something...")
Antwoord 10
Met deze methode kunt u uw programma hervatten door op een bepaalde toets te drukken die u heeft opgegeven:
import keyboard
while True:
key = keyboard.read_key()
if key == 'space': # You can put any key you like instead of 'space'
break
Dezelfde methode, maar op een andere manier:
import keyboard
while True:
if keyboard.is_pressed('space'): # The same. you can put any key you like instead of 'space'
break
Opmerking: u kunt de module keyboard
installeren door dit te schrijven in je shell of cmd:
pip install keyboard
Antwoord 11
platformoverschrijdende manier; werkt overal
import os, sys
if sys.platform == 'win32':
os.system('pause')
else:
input('Press any key to continue...')
Antwoord 12
Ik werk met niet-programmeurs die van een eenvoudige oplossing houden:
import code
code.interact(banner='Paused. Press ^D (Ctrl+D) to continue.', local=globals())
Dit levert een interpreter op die bijna precies hetzelfde werkt als de echte interpreter, inclusief de huidige context, met alleen de output:
Gepauzeerd. Druk op ^D (Ctrl+D) om door te gaan. >>>
De Python Debuggeris ook een goede manier om te pauzeren.
p>
import pdb
pdb.set_trace() # Python 2
of
breakpoint() # Python 3
Antwoord 13
Ik denk dat de beste manier om de uitvoering te stoppen de functie time.sleep()is.
Als u de uitvoering alleen in bepaalde gevallen moet opschorten, kunt u eenvoudig een if-statement als volgt implementeren:
if somethinghappen:
time.sleep(seconds)
Je kunt de tak elseleeg laten.
Antwoord 14
In Linux kun je kill -TSTP <pid>
naar de achtergrond sturen en een proces stoppen. Het is er dus, maar het kost geen CPU-tijd.
Vervolgens, kill -CONT <pid>
en het is uit en weer actief.
Antwoord 15
Ik denk dat ik deze oplossing leuk vind:
import getpass
getpass.getpass("Press Enter to Continue")
Het verbergt wat de gebruiker typt, wat helpt om te verduidelijken dat invoer hier niet wordt gebruikt.
Maar wees voorzichtig met het OS X-platform. Er wordt een sleutel weergegeven die verwarrend kan zijn.
Waarschijnlijk zou de beste oplossing zijn om zelf iets te doen dat lijkt op de getpass-module, zonder een read -s
aanroep te doen. Misschien de voorgrondkleur laten overeenkomen met de achtergrond?
Antwoord 16
Voor cross Python 2/3 compatibiliteit kun je input
gebruiken via de six
bibliotheek:
import six
six.moves.input( 'Press the <ENTER> key to continue...' )