यह पता है कि ऑपरेटिंग सिस्टम का उपयोग कर रहे हैं करने के लिए मदद मिलेगी, के रूप में यह एक बहुत ही ऑपरेटिंग सिस्टम विशिष्ट सवाल है। उदाहरण के लिए, काइलर का जवाब विंडोज पर काम नहीं करता है क्योंकि sys.stdin में फिलेनो विशेषता नहीं है।
मैं उत्सुक था और साथ में एक समाधान शाप का उपयोग कर फेंक दिया, लेकिन इस विंडोज या तो पर काम नहीं करेगा:
#!/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)
संपादित करें: आह, विंडोज। फिर आप msvcrt मॉड्यूल का उपयोग कर सकते हैं। ध्यान दें कि नीचे कोड सही नहीं है, और यह सब पर निष्क्रिय में काम नहीं करता:
#!/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
स्रोत
2010-03-26 03:56:09
आपको sys.stdout.flush() के बाद उस अर्धविराम की आवश्यकता नहीं है; ' –
मेरा बुरा, आप सही हैं, मुझे सेमी-कोलन की आवश्यकता नहीं है। कोड फिक्स्ड – Amjith
"सभी प्रमुख स्ट्रोक फ्लश या त्यागें"? क्या आपका मतलब है "पढ़ें और अनदेखा करें" आप आसानी से "फ्लश" इनपुट नहीं कर सकते हैं। सरल, स्पष्ट चीज़ क्यों न करें: उन्हें पढ़ें और उन्हें अनदेखा करें? –