暂停在Python中
我正在从Windows任务栏运行命令行Python脚本,方法是将实际脚本作为参数指向Python解释器。
脚本处理完毕后,解释器终止,输出窗口closures,无法读取脚本输出。
什么是最直接的方法来保持解释窗口打开,直到任何按键被按下?
在batch file中,可以暂停脚本。 最接近我在Python中发现的是raw_input()
,这是次优的,因为它需要按下返回键(而不是任何键)。
有任何想法吗?
一种方法是在最后保留一个raw_input()
,这样脚本就会在等到你终止之前按Enter键。
尝试os.system("pause")
– 我用它,它为我工作。
确保在脚本的顶部包含import os
。
在closures之前不需要等待input,只需要像这样改变你的命令:
cmd /K python <script>
/K
开关将执行下面的命令,但保持打开命令解释程序窗口,与执行然后closures的/C
。
最好的select: os.system('pause')
< – 这实际上会显示一条消息,说'按任意键继续',而只添加raw_input('')
将不会打印任何消息,只有光标可用。
不相关答案:
os.system("some cmd command")
是一个非常棒的命令,因为命令可以执行任何batch file/ cmd命令。
一种方法是在最后保留一个raw_input(),这样脚本就会等待你按下input,然后终止。
使用raw_input()而不是msvcrt。*的好处在于前者是标准Python(即绝对跨平台)的一部分。 这也意味着双击脚本文件图标后,脚本窗口将保持活动状态,而无需执行
cmd /K python <script>
在Windows中,您可以使用msvcrt
模块。
msvcrt.kbhit()如果按键正在等待读取,则返回true。
msvcrt.getch()读取按键并返回结果字符。 什么都没有回应到控制台。 如果按键不可用,此调用将被阻止,但不会等待按下Enter键。
如果你希望它也可以在类Unix系统上工作,你可以使用termios和fcntl模块来尝试这个解决scheme 。
是的,我知道我张贴到一个旧线程,但我想添加我的投票使用input()(3.x及以上)。
添加到我的.py脚本的末尾,确实可以防止控制台窗口打开并立即closures。
至于按什么键来closures它的“问题”,我(和其他人的数以千计,我敢肯定)只是使用input(“按Enter键closures”)。
感谢让我添加我的2美分价值:)
。
在Windows 10插入在开始这个:
#!/usr/bin/env python # -*- coding: utf-8 -*-
奇怪的,但它对我有用!(当然,与input()结尾)
外部WConio模块可以帮助这里: http ://newcenturycomputers.net/projects/wconio.html
import WConio WConio.getch()
import pdb pdb.debug()
这用于debugging脚本。 应该也是有用的打破。
让python以无缓冲的方式从terminal读取单个字符是有点棘手的,但是这是一个配方:
Recipe 134892:getch() – 就像在Windows和Unix(Python)上从stdin读取非缓冲字符一样,
如果你input
input("")
它会等待他们按下任何button,然后继续。 你也可以在报价之间放置文字。