Nó sẽ giúp để biết những gì hệ điều hành bạn đang sử dụng, vì đây là một câu hỏi rất hệ điều hành cụ thể. Ví dụ, câu trả lời của Kylar không hoạt động trên Windows vì sys.stdin không có thuộc tính fileno.
Tôi đã tò mò và ném cùng một giải pháp sử dụng lời nguyền, nhưng điều này sẽ không làm việc trên Windows hoặc:
#!/usr/bin/python
import time
import sys
import curses
def alarmloop(stdscr):
stdscr.addstr("How many seconds (alarm1)? ")
curses.echo()
alarm1 = int(stdscr.getstr())
while (1):
time.sleep(alarm1)
curses.flushinp()
stdscr.clear()
stdscr.addstr("Alarm1\n")
stdscr.addstr("Continue (Y/N)?[Y]:")
doit = stdscr.getch()
stdscr.addstr("\n")
stdscr.addstr("Input "+chr(doit)+"\n")
stdscr.refresh()
if doit == ord('N') or doit == ord('n'):
stdscr.addstr("Exiting.....\n")
break
curses.wrapper(alarmloop)
EDIT: ah, Windows. Sau đó, bạn có thể sử dụng mô-đun msvcrt. Lưu ý rằng mã dưới đây không phải là hoàn hảo, và nó không hoạt động trong IDLE tại tất cả:
#!/usr/bin/python
import time
import subprocess
import sys
import msvcrt
alarm1 = int(raw_input("How many seconds (alarm1)? "))
while (1):
time.sleep(alarm1)
print "Alarm1"
sys.stdout.flush()
# Try to flush the buffer
while msvcrt.kbhit():
msvcrt.getch()
print "Continue (Y/N)?[Y]"
doit = msvcrt.getch()
print "Input",doit
if doit == 'N' or doit=='n':
print "Exiting....."
break
Nguồn
2010-03-26 03:56:09
bạn không cần dấu chấm phẩy đó sau 'sys.stdout.flush();' –
Tệ của tôi, bạn nói đúng, tôi không cần dấu chấm phẩy. Sửa mã. – Amjith
"tuôn ra hoặc loại bỏ tất cả các nét chính"? Bạn có nghĩa là "Đọc và bỏ qua" Bạn không thể dễ dàng "tuôn ra" đầu vào. Tại sao không làm điều đơn giản, hiển nhiên: đọc chúng và bỏ qua chúng? –