我正在从Windows任务栏运行命令行Python脚本,方法是使用实际脚本作为参数指向Python解释器的快捷方式.
处理完脚本后,解释器终止,输出窗口关闭,无法读取脚本输出.
在按下任何键之前,保持解释器窗口打开的最简单方法是什么?
在批处理文件中,可以暂停结束脚本.我在python中发现的最接近的是raw_input()
它是次优的,因为它需要按下返回键(而不是任何键).
有任何想法吗?
小智 53
一种方法是raw_input()
在结尾处留下一个,以便脚本在它终止之前等待您按Enter键.
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命令.
一种方法是在末尾留下raw_input(),以便脚本在终止之前等待您按Enter键.
使用raw_input()而不是msvcrt.*的好处是前者是标准Python的一部分(即绝对跨平台).这也意味着双击脚本文件图标后脚本窗口将处于活动状态,而无需执行此操作
cmd /K python <script>
Run Code Online (Sandbox Code Playgroud)
在 Windows 上您可以使用该msvcrt
模块。
msvcrt.kbhit()
True
如果按键正在等待读取则 返回。
msvcrt.getch()
读取按键并将结果字符作为字节字符串返回。控制台没有任何回显。如果按键尚不可用,则此调用将阻塞,但不会等待按下 Enter。如果按下的键是特殊功能键,则返回'\000'
或'\xe0'
;下一次调用将返回键码。Control-C
使用此功能无法读取按键。
如果您希望它也能在类 Unix 系统上工作,您可以使用termios和fcntl模块尝试此解决方案。