我刚开始使用Python。当我在Windows上执行python脚本文件时,出现输出窗口,但立即消失。我需要它呆在那里,以便我可以分析我的输出。如何保持打开状态?
我刚开始使用Python。当我在Windows上执行python脚本文件时,出现输出窗口,但立即消失。我需要它呆在那里,以便我可以分析我的输出。如何保持打开状态?
Answers:
您有几种选择:
从已经打开的终端运行程序。打开命令提示符并键入:
python myscript.py
为此,您需要在路径中使用python可执行文件。只需检查如何在Windows 上编辑环境变量,然后添加C:\PYTHON26
(或安装python的任何目录)即可。
程序结束后,它将带您回到cmd提示符,而不是关闭窗口。
添加代码以在脚本末尾等待。对于Python2,添加...
raw_input()
...在脚本末尾使其等待Enter键。该方法很烦人,因为您必须修改脚本,并且必须记得在完成后将其删除。测试其他人的脚本时特别烦人。对于Python3,请使用input()
。
使用适合您的编辑器。一些为python准备的编辑器将在执行后自动为您暂停。其他编辑器允许您配置用于运行程序的命令行。我发现python -i myscript.py
在运行时将其配置为“ ” 特别有用。程序结束后,您将在加载了程序环境的情况下进入python shell,因此您可以进一步使用变量以及调用函数和方法。
cmd /k
是使用控制台窗口打开任何控制台应用程序(不仅限于Python)的典型方法,该窗口在应用程序关闭后仍将保留。我认为最简单的方法是按Win + R,键入cmd /k
,然后将想要的脚本拖放到“运行”对话框中。
cmd /k
仅Windows。抱歉,我无法使用Mac替代品。
从已经打开的cmd窗口中启动脚本,或者在脚本末尾添加如下所示的内容,在Python 2中:
raw_input("Press enter to exit ;)")
或者,在Python 3中:
input("Press enter to exit ;)")
在出现异常时保持窗口打开(但在打印异常时)
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()
对于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()
使用atexit
,您可以在程序退出时立即暂停它。如果错误/异常是退出的原因,则它将在打印stacktrace后暂停。
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.
我有一个类似的问题。使用Notepad ++时,我曾经使用过命令:C:\Python27\python.exe "$(FULL_CURRENT_PATH)"
在代码终止后立即关闭cmd窗口。
现在我正在使用cmd /k c:\Python27\python.exe "$(FULL_CURRENT_PATH)"
它来保持cmd窗口打开。
为了保持窗口打开,我同意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()”)附近键入double,它将认为它是函数,变量等,而不是文本。
在下一个示例中,我使用双引号,但由于它认为“ the”和“ function”之间的引号存在中断,所以即使它在您阅读时,您自己的想法也可以完全理解,但它不会起作用:
print("You have reached the end and the "input()" function is keeping the window open")
input()
希望这可以帮助那些可能刚起步但还没有弄清楚计算机如何思考的人。可能要花一点时间。:o)
如果要从桌面快捷方式运行脚本,请右键单击python文件,然后选择Send to|Desktop (create shortcut)
。然后右键单击快捷方式,然后选择“属性”。在“快捷方式”选项卡上,选择“目标:”文本框,然后添加cmd /k
到路径的前面,然后单击“确定”。现在,该快捷方式应该可以在不关闭脚本的情况下运行您的脚本,并且您不需要input('Hit enter to close')
请注意,如果您的计算机上有多个版本的python,请在cmd / k和scipt路径之间添加所需python可执行文件的名称,如下所示:
cmd /k python3 "C:\Users\<yourname>\Documents\your_scipt.py"
除了input
和之外raw_input
,您还可以使用无限while
循环,例如:
while True: pass
(Python 2.5 + / 3)或while 1: pass
(Python 2/3的所有版本)。但是,这可能会使用计算能力。
您也可以从命令行运行程序。python
在命令行(Mac OS X Terminal)中键入,然后说Python 3.?.?
(您的Python版本)它不会显示您的Python版本,或者说您python: command not found
正在研究更改PATH值(上面列出的环境值)/ type C:\(Python folder\python.exe
。如果成功,则键入python
或C:\(Python installation)\python.exe
和程序的完整目录。
您可以打开PowerShell并键入“ python”。导入Python之后,您可以从您喜欢的文本编辑器中复制粘贴源代码以运行代码。
窗户不会关闭。
[Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27", "User")
print "hello world"
python hello.py
最简单的方法:
import time
#Your code here
time.sleep(60)
#end of code (and console shut down)
这将使代码保留1分钟,然后将其关闭。