Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python错误后保持Windows控制台打开_Python_Windows_Console - Fatal编程技术网

Python错误后保持Windows控制台打开

Python错误后保持Windows控制台打开,python,windows,console,Python,Windows,Console,我的机器(winxp home)上的文件关联使得python脚本可以直接用python解释器打开。如果我双击一个python脚本,控制台窗口就会运行,只要脚本中没有语法错误,一切正常 在这种情况下,控制台窗口会打开一会儿,但会立即关闭。速度太快,无法读取错误消息 当然,他们可以手动打开控制台窗口,并通过键入python myscript.py来执行脚本,但我确信有一种更方便的(即“基于双击”)解决方案。创建批处理文件: C:\Python26\python.exe %1 IF %ERRORLEV

我的机器(winxp home)上的文件关联使得python脚本可以直接用python解释器打开。如果我双击一个python脚本,控制台窗口就会运行,只要脚本中没有语法错误,一切正常

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

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

创建批处理文件:

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

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

在未关闭的命令提示符窗口中运行命令的标准方式是

cmd /k "your command"

我在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
时,这不起作用。“modules”是一个与python脚本位于同一文件夹中的文件夹。使用debug.bat调用脚本时,当前工作目录将更改为已删除文件的目录。因此,为了获得“模块”的路径,我必须使用绝对路径:

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

我这样做的方式是,我右键单击我从记事本保存到.py文件的脚本,然后单击“空闲编辑”,这是一个编辑功能,但您也可以从它运行模块

就像我想要的那样工作。谢谢有没有一种方法可以通过拖放来实现这一点?我的python脚本处理掉在上面的文件夹。当出现错误时,我通常尝试捕获(屏幕截图)命令提示符,然后检查错误。这并不总是有效的。窗口关闭太快,或者我无法计时捕获(在长脚本中)。那么,我可以在bat文件上放置一个文件夹,并使bat文件将其(文件夹路径)作为参数传递给python脚本吗?如何将文件类型与批处理脚本关联?Windows 10只希望允许注册的应用程序关联。对于未来的访问者,这可能是重复的,但不是重复的。保持窗口打开和出错后保持窗口打开是两件不同的事情。出现错误时,将忽略您保持窗口打开的尝试(例如,
input()
)。输入此问题。