我如何让我的python脚本等待,直到用户按下任何键?
当前回答
在Python 3中,使用input():
input("Press Enter to continue...")
在Python 2中,使用raw_input():
raw_input("Press Enter to continue...")
其他回答
如果你想看看他们是否按了一个确切的键(比如“b”),可以这样做:
while True:
choice = raw_input("> ")
if choice == 'b' :
print "You win"
input("yay")
break
跨平台,Python 2/3代码:
# import sys, os
def wait_key():
''' Wait for a key press on the console and return it. '''
result = None
if os.name == 'nt':
import msvcrt
result = msvcrt.getwch()
else:
import termios
fd = sys.stdin.fileno()
oldterm = termios.tcgetattr(fd)
newattr = termios.tcgetattr(fd)
newattr[3] = newattr[3] & ~termios.ICANON & ~termios.ECHO
termios.tcsetattr(fd, termios.TCSANOW, newattr)
try:
result = sys.stdin.read(1)
except IOError:
pass
finally:
termios.tcsetattr(fd, termios.TCSAFLUSH, oldterm)
return result
我删除了fctl/非阻塞的东西,因为它给IOErrors,我不需要它。我使用这段代码是因为我想让它阻塞。;)
附录:
我在PyPI上的一个包中实现了这个功能,还有很多其他叫做console的东西:
>>> from console.utils import wait_key
>>> wait_key()
'h'
如果您想等待输入(这样用户敲击键盘不会导致一些意想不到的事情发生),请使用
sys.stdin.readline()
python手册提供了以下内容:
import termios, fcntl, sys, os
fd = sys.stdin.fileno()
oldterm = termios.tcgetattr(fd)
newattr = termios.tcgetattr(fd)
newattr[3] = newattr[3] & ~termios.ICANON & ~termios.ECHO
termios.tcsetattr(fd, termios.TCSANOW, newattr)
oldflags = fcntl.fcntl(fd, fcntl.F_GETFL)
fcntl.fcntl(fd, fcntl.F_SETFL, oldflags | os.O_NONBLOCK)
try:
while 1:
try:
c = sys.stdin.read(1)
print "Got character", repr(c)
except IOError: pass
finally:
termios.tcsetattr(fd, termios.TCSAFLUSH, oldterm)
fcntl.fcntl(fd, fcntl.F_SETFL, oldflags)
它可以滚动到您的用例中。
操作系统。系统似乎总是调用sh,它不识别读取的s和n选项。但是read命令可以传递给bash:
os.system("""bash -c 'read -s -n 1 -p "Press any key to continue..."'""")
推荐文章
- 从URL中获取参数
- 在python中插入一个列表到另一个列表的语法是什么?
- Python中的最大浮点数是多少?
- 将一个列表分成大约相等长度的N个部分
- Python __str__与__unicode__
- 在python中,del和delattr哪个更好?
- 如何动态加载Python类
- 有没有办法在python中做HTTP PUT
- “foo Is None”和“foo == None”之间有什么区别吗?
- 类没有对象成员
- Django模型“没有显式声明app_label”
- 熊猫能自动从CSV文件中读取日期吗?
- 在python中zip的逆函数是什么?
- 有效的方法应用多个过滤器的熊猫数据框架或系列
- 如何检索插入id后插入行在SQLite使用Python?