在Python中暂停

48 python command-line

我正在从Windows任务栏运行命令行Python脚本,方法是使用实​​际脚本作为参数指向Python解释器的快捷方式.

处理完脚本后,解释器终止,输出窗口关闭,无法读取脚本输出.

在按下任何键之前,保持解释器窗口打开的最简单方法是什么?

在批处理文件中,可以暂停结束脚本.我在python中发现的最接近的是raw_input()它是次优的,因为它需要按下返回键(而不是任何键).

有任何想法吗?

小智 53

一种方法是raw_input()在结尾处留下一个,以便脚本在它终止之前等待您按Enter键.

  • [使用Python 3+](http://stackoverflow.com/questions/954834/easy-how-to-use-raw-input-in-3-1),这已改为`input()`. (30认同)
  • 这不是解决方案.我不知道为什么回答者会选择它.规格是"按任意键而不只是输入".此解决方案仅适用于enter. (15认同)
  • @ Wolfpack'08虽然我同意这个答案显然没有回答这个问题,但应该指出这是谷歌搜索"python暂停"列表中的一个高位,所以得到这个答案仍然很有用. (4认同)
  • 不过,您不认为回答实际问题有意义吗?如果甚至在评论中? (3认同)

小智 41

尝试os.system("pause")- 我用它,它对我有用.

确保包含import os在脚本的顶部.


Dav*_*ant 13

在关闭之前无需等待输入,只需更改命令:

cmd /K python <script>
Run Code Online (Sandbox Code Playgroud)

/K交换机将执行下面的命令,但留下的命令解释器窗口中打开,相反/C,它执行,然后关闭.


Kin*_*Mak 10

最好的选择:os.system('pause')< - 这实际上会显示一条消息,说'按任意键继续',而添加只会raw_input('')打印没有消息,只有光标可用.

与答案无关:

os.system("some cmd command") 这是一个非常好的命令,因为该命令可以执行任何批处理文件/ cmd命令.


Bor*_*lik 7

一种方法是在末尾留下raw_input(),以便脚本在终止之前等待您按Enter键.

使用raw_input()而不是msvcrt.*的好处是前者是标准Python的一部分(即绝对跨平台).这也意味着双击脚本文件图标后脚本窗口将处于活动状态,而无需执行此操作

cmd /K python <script>
Run Code Online (Sandbox Code Playgroud)


dF.*_*dF. 5

在 Windows 上您可以使用该msvcrt模块。

  • msvcrt.kbhit()
    True如果按键正在等待读取则 返回。

  • msvcrt.getch()
    读取按键并将结果字符作为字节字符串返回。控制台没有任何回显。如果按键尚不可用,则此调用将阻塞,但不会等待按下 Enter。如果按下的键是特殊功能键,则返回'\000''\xe0';下一次调用将返回键码。Control-C使用此功能无法读取按键。

如果您希望它也能在类 Unix 系统上工作,您可以使用termiosfcntl模块尝试此解决方案