在Python中暂停

在Python中暂停,python,command-line,Python,Command Line,我在Windows任务栏上运行命令行Python脚本,方法是使用实际脚本作为参数,通过一个指向Python解释器的快捷方式 处理脚本后,解释器终止,输出窗口关闭,无法读取脚本输出 在按下任何键之前,保持解释器窗口打开的最直接的方法是什么 在批处理文件中,可以暂停脚本。我在python中发现的最接近这一点的是raw\u input(),这是次优的,因为它需要按return键(而不是任何键) 有什么想法吗?在Windows中,您可以使用该模块 msvcrt.kbhit() 如果按键等待读取,则返回t

我在Windows任务栏上运行命令行Python脚本,方法是使用实际脚本作为参数,通过一个指向Python解释器的快捷方式

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

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

在批处理文件中,可以暂停脚本。我在python中发现的最接近这一点的是
raw\u input()
,这是次优的,因为它需要按return键(而不是任何键)


有什么想法吗?

在Windows中,您可以使用该模块

msvcrt.kbhit() 如果按键等待读取,则返回true

msvcrt.getch() 读取按键并返回结果字符。没有回声 到控制台。此呼叫将被阻止 如果还没有按键 可用,但不会等待输入 被压迫


如果希望它也能在类似Unix的系统上工作,可以尝试使用和模块。

关闭前无需等待输入,只需按如下方式更改命令:

cmd /K python <script>
cmd /K python <script>
cmd/K python

/K
开关将执行随后的命令,但命令解释器窗口保持打开状态,与执行然后关闭的
/C
相反。

一种方法是保留
原始输入()
结束时,脚本将等待您按Enter键,然后再终止。

外部WConio模块可在此处提供帮助:

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

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

cmd/K python
这用于调试脚本。中断也应该很有用。

试试操作系统(“暂停”)-我用过它,它对我有用


确保在脚本顶部包含导入操作系统。

让python以无缓冲的方式从终端读取单个字符有点棘手,但下面有一个方法可以做到这一点:


最佳选项:
os.system('pause')
如果您键入

input("")

它将等待他们按下任何按钮,然后继续。您也可以将文本放在引号之间。

至于按什么键关闭它的“问题”,我(和成千上万的其他人,我肯定)只需使用
输入(“按Enter键关闭”)
Windows 10
上插入以下内容:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

奇怪,但它对我有用!(当然,最后还要加上
input()

有一种简单的方法,您可以使用键盘模块的
wait
功能。例如,您可以执行以下操作:

import keyboard
print("things before the pause")
keyboard.wait("esc") # esc is just an example, you can obviously put every key you want
print("things after the pause")

+1:很多人可以找到“回车”或“回车”键而不会犯大错误。要求“任意键”而不是返回似乎有点愚蠢。在Bernd指定的情况下,这没有帮助:从任务栏快捷方式启动脚本,除非快捷方式配置正确(这不是默认情况)。@bgbg:但整个想法是快捷方式已更改/K需要通过“退出”终止cmd或者使用鼠标关闭窗口。这比一次按键要多一些:-)@Bernd:True,但是你可以使用Alt+Space+C,这样你就不用重写所有的脚本了!,这已更改为仅
input()
。这不是解决方案。我不知道回答者为什么选择它。规格是“按任意键,而不只是输入”。此解决方案仅适用于enter。@Wolfpack'08虽然我同意此答案显然不能回答此问题,但应该指出的是,这是谷歌搜索“python暂停”列表中的一个重要部分,因此获得此答案仍然很有用。不过,您不认为回答实际问题有意义吗?即使是在评论中?我也遇到了
os.system('pause')
的问题,正如你所说,我搜索了这个问题。@ρ∑ρK你在说什么,伙计?他说就在那里使用
输入
,这正是OP所要求的。不过,我们需要重新编写,摆脱这种喋喋不休的风格。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import keyboard
print("things before the pause")
keyboard.wait("esc") # esc is just an example, you can obviously put every key you want
print("things after the pause")