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

roh*_*hra 181 python windows

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

nos*_*klo 145

你有几个选择:

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

    python myscript.py
    
    Run Code Online (Sandbox Code Playgroud)

    为此,您需要路径中的python可执行文件.只需检查如何在Windows 上编辑环境变量,并添加C:\PYTHON26(或安装python的任何目录).

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

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

    raw_input()
    
    Run Code Online (Sandbox Code Playgroud)

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

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

  • +1到第3项.我使用Scite作为我的Python编辑器,它只是将输出保存在自己的输出窗口中.这非常有用,因为您可以在单个窗口中看到多个运行的输出. (8认同)
  • 我有一个更好的方法:使用`os`。我使用以下代码:`import os os.system("PAUSE")` for windows 和`import os os.system('read -p ""')`。这似乎是一种更清洁的方法。 (2认同)

tzo*_*zot 47

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

  • 很棒的答案.你应该得到这个. (3认同)

Anu*_*yal 38

从已打开的cmd窗口启动脚本,或者在Python 2的脚本末尾添加类似的内容:

 raw_input("Press enter to exit ;)")
Run Code Online (Sandbox Code Playgroud)

或者,在Python 3中:

input("Press enter to exit ;)")
Run Code Online (Sandbox Code Playgroud)

  • 如果你仔细想想,只有"进入"才会让你"退出"...... (41认同)
  • 请注意,如果发生异常,终端将关闭 (4认同)
  • “任意键”都不起作用,只有 Enter 可以(或 Ctrl+D,具体取决于我们所在的位置)。 (2认同)

Ant*_*nio 19

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

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() 
Run Code Online (Sandbox Code Playgroud)

在任何情况下保持窗口打开:

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()
Run Code Online (Sandbox Code Playgroud)

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() 
Run Code Online (Sandbox Code Playgroud)

在任何情况下保持窗口打开:

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()
Run Code Online (Sandbox Code Playgroud)


fei*_*ann 13

你可以在之前结合答案:(对于Notepad ++用户)

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

cmd /k python -i "$(FULL_CURRENT_PATH)"
Run Code Online (Sandbox Code Playgroud)

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


小智 9

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

python your-program.py

pause
Run Code Online (Sandbox Code Playgroud)

  • 或者`.py`文件末尾的`import os os.system("pause")` (3认同)
  • 这是唯一一个甚至远程正确的答案.需要破坏你将使用`raw_input`或其他垃圾运行的每个单独的Python脚本的答案都是错误的.您可以按照Python期望的方式在命令行上键入命令,也可以使用MS-DOS提供的[批处理语言](https://en.wikipedia.org/wiki/List_of_DOS_commands#PAUSE)_exactly this目的_自[1981年8月](https://en.wikipedia.org/wiki/Timeline_of_DOS_operating_systems#8108). (2认同)
  • 更好的是,使用 `python %*` 并将其设置为“打开方式”程序之一,这样您就可以右键单击 .py 文件来打开暂停窗口,或者我也将其放入我的 Anaconda3 文件夹(在 PATH 中)中py_pause.bat 所以现在我可以从 cmd 行运行 `py_pause my-prog.py all my args` (2认同)

Bra*_*lar 7

在python 2中,您可以使用:raw_input()

>>print("Hello World!")    
>>raw_input('Waiting a key...')
Run Code Online (Sandbox Code Playgroud)

在python 3中,您可以使用:input()

>>print("Hello world!")    
>>input('Waiting a key...')
Run Code Online (Sandbox Code Playgroud)

另外,你可以用time.sleep(时间)来做

>>import time
>>print("The program will close in 5 seconds")
>>time.sleep(5)
Run Code Online (Sandbox Code Playgroud)


Ami*_*ila 7

在 Python 3 上

input('Press Enter to Exit...')
Run Code Online (Sandbox Code Playgroud)

会做的伎俩。


lee*_*ewz 6

使用atexit,您可以在程序退出时暂停.如果错误/异常是退出的原因,它将在打印堆栈跟踪后暂停.

import atexit

# Python 2 should use `raw_input` instead of `input`
atexit.register(input, 'Press Enter to continue...')
Run Code Online (Sandbox Code Playgroud)

在我的程序中,我将调用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.
Run Code Online (Sandbox Code Playgroud)


Mat*_*tej 5

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


小智 5

你可以写

input()
Run Code Online (Sandbox Code Playgroud)

在你的代码末尾

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

{ENTER for example}
Run Code Online (Sandbox Code Playgroud)