Самый простой способ приостановить программу python из командной строки?

Предположим, у меня есть программа python, которая выплевывает строки текста, такие как:

while 1: print "This is a line" 

Какой самый простой способ позволить одному нажать клавишу на клавиатуре, чтобы приостановить цикл, а затем возобновить, если нажать снова — но если ничего не нажать, оно должно просто продолжить автоматически?

Я надеюсь, что мне не нужно заниматься чем-то вроде проклятий, чтобы получить это!

Вы можете попробовать эту реализацию для Linux / Mac (и возможных других Unices) (атрибуция кода: найдена в ActiveState Code Recipes ).

В Windows вы должны проверить msvcrt .

 import sys, termios, atexit from select import select # save the terminal settings fd = sys.stdin.fileno() new_term = termios.tcgetattr(fd) old_term = termios.tcgetattr(fd) # new terminal setting unbuffered new_term[3] = (new_term[3] & ~termios.ICANON & ~termios.ECHO) # switch to normal terminal def set_normal_term(): termios.tcsetattr(fd, termios.TCSAFLUSH, old_term) # switch to unbuffered terminal def set_curses_term(): termios.tcsetattr(fd, termios.TCSAFLUSH, new_term) def putch(ch): sys.stdout.write(ch) def getch(): return sys.stdin.read(1) def getche(): ch = getch() putch(ch) return ch def kbhit(): dr,dw,de = select([sys.stdin], [], [], 0) return dr <> [] 

Реализация того, что вы ищете, станет таким:

 atexit.register(set_normal_term) set_curses_term() while True: print "myline" if kbhit(): print "paused..." ch = getch() while True if kbhit(): print "unpaused..." ch = getch() break 

Самый простой способ для меня , предполагая, что я работал в bash, – это нажать Control-Z, чтобы приостановить работу, а затем использовать команду «fg», чтобы восстановить ее, когда я был готов. Но поскольку я не знаю, какую платформу вы используете, мне придется использовать решение ChristopheD в качестве вашей лучшей отправной точки.