ฉันใช้input
ฟังก์ชันเป็นวิธีหยุดสคริปต์ของฉันชั่วคราว
print("something")
wait = input("PRESS ENTER TO CONTINUE.")
print("something")
มีวิธีที่เป็นทางการในการทำเช่นนี้หรือไม่?
ฉันใช้input
ฟังก์ชันเป็นวิธีหยุดสคริปต์ของฉันชั่วคราว
print("something")
wait = input("PRESS ENTER TO CONTINUE.")
print("something")
มีวิธีที่เป็นทางการในการทำเช่นนี้หรือไม่?
คำตอบ:
ดูเหมือนจะดีกับฉัน (หรือraw_input()
ใน Python 2.X) อีกวิธีหนึ่งคือคุณสามารถใช้time.sleep()
ถ้าคุณต้องการหยุดชั่วคราวเป็นจำนวนวินาที
import time
print("something")
time.sleep(5.5) # pause 5.5 seconds
print("something")
print
เพื่อแสดงบล็อคข้อความที่มีความยาวจากนั้นinput()
หรือraw_input('Press <ENTER> to continue')
ตามความเหมาะสมกับ Python เวอร์ชันของคุณ
input()
(หรือraw_input()
บน Python 2.x) เพื่อเตือนผู้ใช้มากกว่าการหน่วงเวลา ผู้อ่านที่รวดเร็วไม่ต้องการรอช้าผู้อ่านที่ช้าอาจต้องการเวลามากขึ้นในการล่าช้าบางคนอาจถูกขัดจังหวะในขณะที่อ่านและต้องการเวลามากขึ้น ฯลฯ นอกจากนี้หากมีคนใช้โปรแกรมมากเขา / เธออาจคุ้นเคยกับการทำงานและไม่จำเป็นต้องอ่านข้อความยาว ๆ เป็นเรื่องง่ายที่จะให้ผู้ใช้ควบคุมว่าจะแสดงบล็อคข้อความเป็นระยะเวลาเท่าใด
สำหรับ windowsใช้เท่านั้น :
import os
os.system("pause")
ดังนั้นฉันจึงพบว่าสิ่งนี้ทำงานได้ดีมากในความพยายามเข้ารหัสของฉัน ฉันเพิ่งสร้างฟังก์ชั่นเมื่อเริ่มต้นโปรแกรม
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
ฉันมีคำถามที่คล้ายกันและฉันใช้สัญญาณ:
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 ของคุณ โปรแกรมของคุณจะโทรหาผู้จัดการที่ลงทะเบียนของคุณและดำเนินการต่อไป
signal.pause
ไม่มี
ฉันใช้สิ่งต่อไปนี้สำหรับ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...")
ตามที่ชี้ให้เห็นโดยความคิดเห็นของmhawkeและstevehaคำตอบที่ดีที่สุดสำหรับคำถามนี้คือ:
สำหรับบล็อกข้อความที่ยาวแนะนำให้ใช้
input('Press <ENTER> to continue')
(หรือraw_input('Press <ENTER> to continue')
บน Python 2.x) เพื่อเตือนผู้ใช้มากกว่าการหน่วงเวลา ผู้อ่านที่รวดเร็วไม่ต้องการรอช้าผู้อ่านที่ช้าอาจต้องการเวลามากขึ้นในการล่าช้าบางคนอาจถูกขัดจังหวะในขณะที่อ่านและต้องการเวลามากขึ้น ฯลฯ นอกจากนี้หากมีคนใช้โปรแกรมมากเขา / เธออาจคุ้นเคยกับการทำงานและไม่จำเป็นต้องอ่านข้อความยาว ๆ เป็นเรื่องง่ายที่จะให้ผู้ใช้ควบคุมว่าจะแสดงบล็อคข้อความเป็นระยะเวลาเท่าใด
ง่ายมาก:
raw_input("Press Enter to continue ...")
exit()
NameError: name 'raw_input' is not defined
Print ("This is how you pause")
input()
ฉันคิดว่าวิธีที่ดีที่สุดในการหยุดการประมวลผลคือฟังก์ชั่น time.sleep () หากคุณต้องการระงับการดำเนินการเฉพาะในบางกรณีคุณสามารถใช้คำสั่ง if หากเป็นเช่นนี้:
if somethinghappen:
time.sleep(seconds)
คุณสามารถปล่อยให้สาขาอื่นว่าง
ฉันคิดว่าฉันชอบโซลนี่
import getpass
getpass.getpass("Press Enter to Continue")
มันซ่อนสิ่งที่ผู้ใช้พิมพ์ซึ่งจะช่วยให้ชัดเจนว่าการป้อนข้อมูลไม่ได้ใช้ที่นี่
แต่ระวังในแพลตฟอร์ม OSX มันจะแสดงกุญแจที่อาจทำให้เกิดความสับสน
อาจเป็นทางออกที่ดีที่สุดคือการทำสิ่งที่คล้ายกับโมดูล getpass ด้วยตัวคุณเองโดยไม่ต้องread -s
โทรออก อาจจะทำให้สี fg ตรงกับ bg?
ด้วยวิธีนี้คุณสามารถใช้งานโปรแกรมของคุณต่อได้โดยกดปุ่มใดก็ได้ที่ระบุไว้ซึ่งคุณได้ระบุไว้ว่า:
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
import os, sys
if sys.platform == 'win32':
os.system('pause')
else:
input('Press any key to continue...')
สำหรับการทำงานร่วมกันระหว่าง Python 2/3 คุณสามารถใช้งานได้input
ผ่านsix
ห้องสมุด:
import six
six.moves.input( 'Press the <ENTER> key to continue...' )