【问题标题】:Keep Windows Console open after a Python Error在 Python 错误后保持 Windows 控制台打开
【发布时间】:2010-05-16 11:32:50
【问题描述】:

我的机器(winxp home)上的文件关联是这样的,python 脚本直接用 python 解释器打开。如果我双击一个 python 脚本,一个控制台窗口就会运行并且一切都很好——只要脚本中没有语法错误。

在这种情况下,控制台窗口会打开一会儿,但会立即关闭。阅读错误消息的速度太快。

当然,他们可以手动打开控制台窗口并通过键入 python myscript.py 来执行脚本,但我确信有更方便(即“基于双击”)的解决方案。

【问题讨论】:

  • 对于未来的访问者,这不是重复的。保持窗口打开和出现错误后保持窗口打开是两件不同的事情。当出现错误时,您保持窗口打开的尝试(例如input())将被忽略。输入这个问题。

标签: python windows console


【解决方案1】:

制作一个批处理文件:

C:\Python26\python.exe %1
IF %ERRORLEVEL% NEQ 0 PAUSE

使用它作为您的文件关联,而不是直接使用 python.exe。这只会在 python.exe 返回错误时导致 PAUSE 语句执行

【讨论】:

  • 像我想要的那样工作。谢谢
  • 有没有办法通过拖放来完成这项工作?我的 python 脚本处理放在它上面的文件夹。当出现错误时,我通常会尝试捕获(截图)命令提示符,然后检查错误。这并不总是有效。窗口关闭得太快,或者我无法计时(在长脚本中)。那么,我可以在 bat 文件上放置一个文件夹,并让 bat 文件将其(文件夹路径)作为参数传递给 python 脚本吗?
  • 如何将文件类型与批处理脚本相关联? Windows 10 只希望允许注册的应用关联。
【解决方案2】:

在不关闭的命令提示符窗口中运行命令的规范方法是

cmd /k "your command"

【讨论】:

    【解决方案3】:

    我在 rossipedia 的回答中就类似情况发表了评论,但我怀疑它会在 8 年前的帖子中引起注意。所以,我自己做了实验。

    我有一个 python 脚本来处理一个放在它上面的文件夹。当我添加新行时,有时会出现语法错误,并且我无法查看它们,因为命令提示符窗口关闭得太快。为了在出错后保持窗口打开,我不得不修改 rossipedia 的代码。我需要一种方法来传递 bat 文件的路径(在其上放置一个文件夹)并使 bat 将该路径传递给 python 脚本。以下是这样做的:

    debug.bat:

    @echo off
    
    REM debug.bat and myscript.py should be in the same dir, otherwise use absolute path for the python script
    
    C:\Users\%username%\AppData\Local\Programs\Python\Python36-32\python.exe "%~dp0\myscript.py" %1
    IF %ERRORLEVEL% NEQ 0 PAUSE
    

    myscript.py:

    import sys
    print("printing dropped file path:")
    print(sys.argv[1])
    input()
    

    如果我遇到错误,我只需使用debug.bat 来查看错误,它的工作原理是一样的(在上面放一个文件夹)。

    更新:

    在我的实际 python 脚本中,我有这一行:

    sys.path.append("modules")
    

    当我使用debug.bat 时,这不起作用。 “模块”是与 python 脚本位于同一文件夹中的文件夹。当使用 debug.bat 调用脚本时,当前工作目录将更改为已删除文件的目录。所以,要获得“模块”的路径,我必须使用绝对路径:

    sys.path.append(os.path.dirname(os.path.abspath(__file__)) + "\\modules")
    

    【讨论】:

      【解决方案4】:

      我这样做的方法是右键单击我从记事本保存到 .py 文件的脚本,然后单击使用 IDLE 编辑,这是一个编辑的东西,但您也可以从中运行模块

      【讨论】:

        猜你喜欢
        • 2016-02-12
        • 1970-01-01
        • 1970-01-01
        • 2014-04-20
        • 1970-01-01
        • 2014-02-08
        • 2010-12-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多