如何保持 Python 脚本输出窗口打开?
- 2024-12-13 08:36:00
- admin 原创
- 180
问题描述:
我刚刚开始使用 Python。当我在 Windows 上执行 Python 脚本文件时,输出窗口会出现,但会立即消失。我需要它停留在那里,以便我可以分析我的输出。我怎样才能让它保持打开状态?
解决方案 1:
您有以下几种选择:
从已打开的终端运行该程序。打开命令提示符并输入:
python myscript.py
要使它工作,你需要在路径中包含 python 可执行文件。只需检查如何在 Windows 上编辑环境变量,然后添加C:PYTHON26
(或你安装 python 的任何目录)。
当程序结束时,它会将您带回到cmd提示符而不是关闭窗口。
在脚本末尾添加代码以等待。对于 Python2,添加...
raw_input()
... 在脚本末尾让它等待密钥Enter
。这种方法很烦人,因为你必须修改脚本,并且必须记住在完成后将其删除。在测试其他人的脚本时尤其烦人。对于 Python3,使用input()
。
使用可以为您暂停的编辑器。一些为 Python 准备的编辑器会在执行后自动为您暂停。其他编辑器允许您配置它用来运行程序的命令行。我发现
python -i myscript.py
在运行时将其配置为“”特别有用。这会在程序结束后将您带到 Python shell,并加载程序环境,因此您可以进一步使用变量并调用函数和方法。
解决方案 2:
cmd /k
是打开任何控制台应用程序(不仅仅是 Python)的典型方法,控制台窗口在应用程序关闭后仍会保留。我能想到的最简单的方法是按 Win+R,键入cmd /k
并将所需的脚本拖放到运行对话框中。
解决方案 3:
从已打开的 cmd 窗口启动脚本,或者在脚本末尾添加类似这样的内容(在 Python 2 中):
raw_input("Press enter to exit;")
或者,在 Python 3 中:
input("Press enter to exit;")
解决方案 4:
在发生异常时保持窗口打开(同时打印异常)
Python 2
if __name__ == '__main__':
try:
## your code, typically one function call
except Exception:
import sys
print sys.exc_info()[0]
import traceback
print traceback.format_exc()
print "Press Enter to continue ..."
raw_input()
无论如何都要保持窗口打开:
if __name__ == '__main__':
try:
## your code, typically one function call
except Exception:
import sys
print sys.exc_info()[0]
import traceback
print traceback.format_exc()
finally:
print "Press Enter to continue ..."
raw_input()
Python 3
对于 Python3,您必须使用input()
来代替raw_input()
,当然还要调整print
语句。
if __name__ == '__main__':
try:
## your code, typically one function call
except BaseException:
import sys
print(sys.exc_info()[0])
import traceback
print(traceback.format_exc())
print("Press Enter to continue ...")
input()
无论如何都要保持窗口打开:
if __name__ == '__main__':
try:
## your code, typically one function call
except BaseException:
import sys
print(sys.exc_info()[0])
import traceback
print(traceback.format_exc())
finally:
print("Press Enter to continue ...")
input()
解决方案 5:
使用以下两行创建 Windows 批处理文件:
python your-program.py
pause
解决方案 6:
你可以合并之前的答案:(适用于 Notepad++ 用户)
按 F5 运行当前脚本并输入命令:
cmd /k python -i "$(FULL_CURRENT_PATH)"
这样,执行 Notepad++ Python 脚本后,您就可以保持交互模式,并且可以随意操作变量等等:)
解决方案 7:
使用atexit
,您可以在程序退出时暂停程序。如果退出的原因是错误/异常,则程序将在打印堆栈跟踪后暂停。
import atexit
# Python 2 should use `raw_input` instead of `input`
atexit.register(input, 'Press Enter to continue...')
在我的程序中,我将调用放在子句atexit.register
中except
,这样只有在出现问题时它才会暂停。
if __name__ == "__main__":
try:
something_that_may_fail()
except:
# Register the pause.
import atexit
atexit.register(input, 'Press Enter to continue...')
raise # Reraise the exception.
解决方案 8:
在 Python 2 中你可以使用以下方法实现:raw_input()
>>print("Hello World!")
>>raw_input('Waiting a key...')
在 Python 3 中你可以使用以下方法执行此操作:input()
>>print("Hello world!")
>>input('Waiting a key...')
另外,你可以用 time.sleep(time) 来做到这一点
>>import time
>>print("The program will close in 5 seconds")
>>time.sleep(5)
解决方案 9:
在 Python 3 上
input('Press Enter to Exit...')
会起作用。
解决方案 10:
你可以写
input()
在代码的末尾
因此,当你运行脚本时,它会等待你输入一些内容
{ENTER for example}
解决方案 11:
我遇到了类似的问题。使用 Notepad++ 时,我曾经使用命令 : C:Python27python.exe "$(FULL_CURRENT_PATH)"
,该命令会在代码终止后立即关闭 cmd 窗口。
现在我使用命令cmd /k c:Python27python.exe "$(FULL_CURRENT_PATH)"
:,该命令会使 cmd 窗口保持打开状态。
解决方案 12:
为了保持窗口打开,我同意 Anurag 的观点,这就是我为运行简短的小型计算类型程序而保持窗口打开所做的工作。
这只会显示一个没有文本的光标:
raw_input()
下一个示例将向您提供一条明确的消息,表明程序已完成,并且不再等待程序中的另一个输入提示:
print('You have reached the end and the "raw_input()" function is keeping the window open')
raw_input()
注意!
(1)在 Python 3 中,没有raw_input(),只有
input()。(2)使用单引号表示字符串;否则,如果您在任何内容周围输入双引号,例如“raw_input()”,它会认为它是一个函数、变量等,而不是文本。
在下一个例子中,我使用了双引号,但它不起作用,因为它认为“the”和“function”之间的引号有一个中断,尽管当你阅读它时,你自己的思维可以完全理解它:
print("You have reached the end and the "input()" function is keeping the window open")
input()
希望这能帮助那些刚开始学习但还未弄清楚计算机如何思考的人。这可能需要一段时间。:o)
解决方案 13:
如果您想从桌面快捷方式运行脚本,请右键单击 Python 文件并选择Send to|Desktop (create shortcut)
。然后右键单击快捷方式并选择属性。在快捷方式选项卡上,选择目标:文本框并cmd /k
在路径前面添加,然后单击确定。快捷方式现在应该可以运行您的脚本而无需关闭,您不需要input('Hit enter to close')
注意,如果您的机器上有多个版本的 python,请在 cmd /k 和脚本路径之间添加所需的 python 可执行文件的名称,如下所示:
cmd /k python3 "C:Users<yourname>Documentsyour_scipt.py"
解决方案 14:
除了input
and之外raw_input
,您还可以使用无限while
循环,如下所示:
while True: pass
(Python 2.5+/3) 或while 1: pass
(所有版本的 Python 2/3)。不过这可能会消耗计算能力。
您也可以从命令行运行该程序。python
在命令行(Mac OS X 终端)中输入,它应该会显示Python 3.?.?
(您的 Python 版本)如果它不显示您的 Python 版本,或显示python: command not found
,请查看更改 PATH 值(环境值,上面列出的)/类型C:(Python folderpython.exe
。如果成功,请输入python
或C:(Python installation)python.exe
以及程序的完整目录。
解决方案 15:
这是一个很迟的答案,但我创建了一个名为的 Windows 批处理文件,pythonbat.bat
其中包含以下内容:
python.exe %1
@echo off
echo.
pause
然后指定pythonbat.bat
为文件的默认处理程序.py
。
现在,当我双击.py
文件资源管理器中的文件时,它会打开一个新的控制台窗口,运行 Python 脚本,然后暂停(保持打开状态),直到我按下任意键...
不需要更改任何 Python 脚本。
我仍然可以打开一个控制台窗口并指定python myscript.py
是否想要......
(我刚刚注意到@maurizio 已经发布了这个确切的答案)
解决方案 16:
最简单的方法:
your_code()
while True:
pass
当您打开窗口时,它不会关闭,直到您关闭提示。
解决方案 17:
如果你想保持 cmd 窗口打开并且位于运行文件目录中,这在 Windows 10 上有效:
cmd /k cd /d $(CURRENT_DIRECTORY) && python $(FULL_CURRENT_PATH)
解决方案 18:
我在 win10 上的 py3 环境中发现解决方案只是以管理员身份运行 cmd 或 powershell,输出将保留在同一个控制台窗口,任何其他类型的用户运行 python 命令都会导致 python 打开一个新的控制台窗口。
解决方案 19:
`import sys,traceback
sys.exc_info()[0]
traceback.format_exc()
print("Press Enter to exit ...")
input()`
只需在实际代码后写入上述代码即可。例如,我从用户那里获取输入并在控制台上打印,因此我的代码将如下所示 -->
`import sys,traceback
nam=input("enter your name:")
print("your name is:-{}".format(nam)) #here all my actual working is done
sys.exc_info()[0]
traceback.format_exc()
print("Press Enter to exit ...")
input()`
解决方案 20:
试试这个,
import sys
stat='idlelib' in sys.modules
if stat==False:
input()
这只会停止控制台窗口,而不是停止 IDLE。
解决方案 21:
您可以使用选项启动python-i
或设置环境变量PYTHONINSPECT=x
。来自文档:
运行脚本后以交互方式检查;即使 stdin 似乎不是终端,也会强制提示;还有 PYTHONINSPECT=x
因此,当您的脚本崩溃或完成时,您会收到一个 python 提示,并且您的窗口不会关闭。
解决方案 22:
创建一个类似dontClose()
或带有循环的函数while
:
import time
def dontClose():
n = 1
while n > 0:
n += 1
time.sleep(n)
然后在代码后运行该函数。例如:
print("Hello, World!")
dontClose()
解决方案 23:
点击此处下载并安装 Notepad++
点击此处下载并安装 Python 2.7 而不是 3。
开始,运行 Powershell。输入以下内容。
[Environment]::SetEnvironmentVariable("Path", "$env:Path;C:Python27", "User")
关闭 Powershell 并重新打开它。
为你的程序创建一个目录。mkdir scripts
打开该目录 cd scripts
在 Notepad++ 的新文件类型中:
print "hello world"
将文件保存为hello.py
返回 powershell 并输入 dir 确保您位于正确的目录中。您应该在那里看到您的文件 hello.py。
在 Powershell 提示符下输入:
python hello.py
解决方案 24:
在 Windows 10 上,在开始时插入以下内容:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
很奇怪,但是它对我有用!(当然,最后与 input() 一起)
解决方案 25:
您可以打开 PowerShell 并输入“python”。导入 Python 后,您可以从您最喜欢的文本编辑器复制粘贴源代码来运行代码。
窗户关不上。
解决方案 26:
保持窗口打开的简单方法:
counter = 0
While (True):
If (counter == 0):
# Code goes here
counter += 1
使用计数器是为了避免代码重复。
解决方案 27:
最简单的方法:
import time
#Your code here
time.sleep(60)
#end of code (and console shut down)
这将使代码保留 1 分钟,然后将其关闭。
扫码咨询,免费领取项目管理大礼包!