我想在我的代码中检测到一个按键,以仅在经过一定时间并且用户请求代码前进(必须跨平台)时才允许正在运行的进程前进。
问题是我正在使用Windows(因此我可以使用msvcrt),但是将运行我的代码的人可能(并且可能会)具有Linux或MacOS,并且我在网上找到了Danny Yoo(http://code.activestate.com/recipes/134892/)上的一些代码。应该做我想要的,但是我不知道如何正确使用它。我什至不知道如何将其导入到我的代码中,即使它位于同一目录中。
some_fn_2 <- function() {
on.exit(return("Well, this works"))
inside_fn <- function() {
eval.parent(return("I wish"))
stop()
}
inside_fn()
return("I wish not")
}
some_fn_2()
[1] "Well, this works"
我尝试在代码中调用class _Getch:
"""Gets a single character from standard input. Does not echo to the screen."""
def __init__(self):
try:
self.impl = _GetchWindows()
except ImportError:
self.impl = _GetchUnix()
def __call__(self): return self.impl()
class _GetchUnix:
def __init__(self):
import tty, sys
def __call__(self):
import sys, tty, termios
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(sys.stdin.fileno())
ch = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
return ch
class _GetchWindows:
def __init__(self):
import msvcrt
def __call__(self):
import msvcrt
return msvcrt.getch()
getch = _Getch()
并创建一个变量import _Getch
,但我不认为这是我想要的。我想要的是让这个假定的跨平台getch来检测用户是否输入了getch = _Getch._Getch()
,然后继续执行过程代码的下一部分。