如何保持Python脚本输出窗口打开?

时间:2009-06-16 11:31:17

标签: python windows

我刚刚开始使用Python。当我在Windows上执行python脚本文件时,输出窗口出现但瞬间消失。我需要它留在那里,所以我可以分析我的输出。我怎样才能保持开放状态?

24 个答案:

答案 0 :(得分:138)

您有几个选择:

  1. 从已打开的终端运行程序。打开命令提示符并键入:

    python myscript.py
    

    为此,您需要路径中的python可执行文件。只需在Windows上查看how to edit environment variables,然后添加C:\PYTHON26(或安装python的任何目录)。

    当程序结束时,它会让您回到 cmd 提示符,而不是关闭窗口。

  2. 添加代码以在脚本结束时等待。对于Python2,添加...

    raw_input()
    

    ...在脚本的末尾使它等待 Enter 键。该方法很烦人,因为您必须修改脚本,并且必须记住在完成后删除它。在测试其他人的脚本时特别烦人。对于Python3,请使用input()

  3. 使用暂停的编辑器。一些为python准备的编辑器会在执行后自动暂停。其他编辑器允许您配置它用于运行程序的命令行。我发现在运行时将其配置为“python -i myscript.py”特别有用。在程序结束后,在程序环境加载的情况下,你会把你带到一个python shell,这样你就可以进一步使用变量并调用函数和方法。

答案 1 :(得分:44)

cmd /k是使用控制台窗口打开任何控制台应用程序(不仅仅是Python)的典型方法,该窗口将在应用程序关闭后保留。我能想到的最简单的方法是按Win + R,键入cmd /k,然后将所需的脚本拖放到“运行”对话框中。

答案 2 :(得分:34)

从已打开的cmd窗口启动脚本或 在脚本的末尾添加这样的东西,在Python 2中:

 raw_input("Press enter to exit ;)")

或者,在Python 3中:

input("Press enter to exit ;)")

答案 3 :(得分:18)

在异常的情况下保持窗口打开(但是,在打印例外时)

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,您必须use input() in place of 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()

答案 4 :(得分:13)

您可以在以下组合答案:(对于Notepad ++用户)

按F5运行当前脚本并输入命令:

cmd /k python -i "$(FULL_CURRENT_PATH)"

通过这种方式,您可以在执行Notepad ++ python脚本后保持交互模式,并且可以使用变量等等:)

答案 5 :(得分:9)

使用以下两行创建Windows批处理文件:

python your-program.py

pause

答案 6 :(得分:6)

在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)

答案 7 :(得分:6)

使用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 :(得分:5)

我有类似的问题。使用Notepad ++,我曾使用命令C:\Python27\python.exe "$(FULL_CURRENT_PATH)",它在代码终止后立即关闭了cmd窗口 现在我正在使用cmd /k c:\Python27\python.exe "$(FULL_CURRENT_PATH)"来保持cmd窗口打开。

答案 9 :(得分:4)

在Python 3上

input('Press Enter to Exit...')

会做的伎俩。

答案 10 :(得分:2)

要保持窗口打开我同意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(),只是   的输入()即可。
  (2)使用单引号表示字符串;否则,如果你在任何东西周围输入双打,例如   “raw_input()”,它会认为它是一个函数,变量等,而不是文本。

在下一个例子中,我使用双引号并且不会工作,因为它认为“the”和“function”之间的引号有中断,即使你在读它,你自己的头脑可以很好地理解它:

print("You have reached the end and the "input()" function is keeping the window open")
input()

希望这可以帮助那些可能正在开始但仍然没有弄清楚计算机是如何思考的人。可能需要一段时间。 :O)

答案 11 :(得分:2)

如果要从桌面快捷方式运行脚本,请右键单击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"

答案 12 :(得分:1)

除了inputraw_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 folder\python.exe。如果成功,请键入您的计划的pythonC:\(Python installation)\python.exe以及完整目录

答案 13 :(得分:1)

你可以写

input()

代码末尾

因此,当您运行脚本时,它将等待您输入内容

{ENTER for example}

答案 14 :(得分:0)

试试这个,

import sys

stat='idlelib' in sys.modules

if stat==False:
    input()

这只会停止控制台窗口,不会停止 IDLE。

答案 15 :(得分:0)

我发现在win10的py3环境上的解决方案仅以Administrator身份运行cmd或powershell,并且输出将保留在同一控制台窗口中,任何其他类型的用户运行python命令都会导致python打开一个新的控制台窗口

答案 16 :(得分:0)

最简单的方法:

import time

#Your code here
time.sleep(60)
#end of code (and console shut down)

这会将代码保留1分钟,然后将其关闭。

答案 17 :(得分:0)

如果您想保持cmd窗口打开并位于运行文件目录中,则可在Windows 10上运行:

cmd /k cd /d $(CURRENT_DIRECTORY) && python $(FULL_CURRENT_PATH)

答案 18 :(得分:0)

您可以打开PowerShell并键入“ python”。 导入Python后,您可以从您喜欢的文本编辑器中复制粘贴源代码以运行代码。

窗口不会关闭。

答案 19 :(得分:0)

一个很晚的答案,但是我创建了一个名为pythonbat.bat的Windows Batch文件,其中包含以下内容:

python.exe %1
@echo off
echo.
pause

,然后将pythonbat.bat指定为.py文件的默认处理程序。

现在,当我在文件资源管理器中双击一个.py文件时,它将打开一个新的控制台窗口,运行Python脚本,然后暂停(保持打开状态),直到按任意键...

无需更改任何Python脚本。

如果要...,我仍然可以打开控制台窗口并指定python myscript.py

(我刚刚注意到@maurizio已经发布了这个确切答案)

答案 20 :(得分:-1)

保持窗口打开的简单技巧:

counter = 0

While (True):

    If (counter == 0):

        # Code goes here

    counter += 1

计数器是这样,所以代码不会重复。

答案 21 :(得分:-1)

`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()`

答案 22 :(得分:-1)

  1. 转到here并下载并安装Notepad ++
  2. 转到here并下载并安装Python 2.7而不是3.
  3. 开始,运行Powershell。输入以下内容。 [Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27", "User")
  4. 关闭Powershell并重新打开它。
  5. 为您的程序创建一个目录。 mkdir脚本
  6. 打开该目录cd scripts
  7. 在Notepad ++中,在新文件类型中:print "hello world"
  8. 将文件另存为hello.py
  9. 返回PowerShell并输入dir确保您在正确的目录中。你应该在那里看到你的文件hello.py。
  10. 在Powershell提示符下键入:python hello.py

答案 23 :(得分:-2)

在Windows 10上插入以下内容:

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

奇怪,但它对我有用!(当然还有最后的输入())