暂停在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,然后继续。 你也可以在报价之间放置文字。