我从 Windows 任务栏运行命令行 Python 脚本,方法是使用指向 Python 解释器的快捷方式,并将实际脚本作为参数。
处理完脚本后,解释器终止并关闭输出窗口,这使得无法读取脚本输出。
在按下任何键之前保持解释器窗口打开的最直接方法是什么?
在批处理文件中,可以用暂停来结束脚本。我在 python 中找到的最接近这个的raw_input()
是次优的,因为它需要按返回键(而不是任何键)。
我从 Windows 任务栏运行命令行 Python 脚本,方法是使用指向 Python 解释器的快捷方式,并将实际脚本作为参数。
处理完脚本后,解释器终止并关闭输出窗口,这使得无法读取脚本输出。
在按下任何键之前保持解释器窗口打开的最直接方法是什么?
在批处理文件中,可以用暂停来结束脚本。我在 python 中找到的最接近这个的raw_input()
是次优的,因为它需要按返回键(而不是任何键)。
一种方法是raw_input()
在末尾保留 a,以便脚本在终止之前等待您按 Enter。
试试os.system("pause")
——我用过它,它对我有用。
确保包含import os
在脚本的顶部。
关闭前无需等待输入,只需像这样更改您的命令:
cmd /K python <script>
开关将执行随后/K
的命令,但命令解释器窗口保持打开状态,相比之下/C
,它执行然后关闭。
最好的选择:os.system('pause')
<-- 这实际上会显示一条消息,说“按任意键继续”,而添加只是raw_input('')
不会打印任何消息,只有光标可用。
与答案无关:
os.system("some cmd command")
是一个非常棒的命令,因为该命令可以执行任何批处理文件/cmd 命令。
一种方法是在末尾保留 raw_input() ,以便脚本在终止之前等待您按 Enter 键。
使用 raw_input() 而不是 msvcrt.* 的好处是前者是标准 Python 的一部分(即绝对跨平台)。这也意味着双击脚本文件图标后,脚本窗口将处于活动状态,无需执行
cmd /K python <script>
在 Windows 上,您可以使用该msvcrt
模块。
msvcrt.kbhit()
True
如果按键正在等待读取,则 返回。
msvcrt.getch()
读取按键并将结果字符作为字节字符串返回。控制台没有回显任何内容。如果按键不可用,此调用将阻塞,但不会等待 Enter 被按下。如果按下的键是一个特殊的功能键,这将返回'\000'
or'\xe0'
; 下一次调用将返回键码。使用Control-C
此功能无法读取按键。
至于按下什么键来关闭它的“问题”,我(以及成千上万的其他人,我敢肯定)只是使用input("Press Enter to close")
.
有一个简单的方法可以做到这一点,你可以使用键盘模块的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")
让 python 以无缓冲的方式从终端读取单个字符有点棘手,但这里有一个方法可以做到:
在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()
这用于调试脚本。打破也应该有用。
如果你输入
input("")
它将等待他们按下任何按钮,然后它将继续。您也可以在引号之间放置文本。