我有一个脚本,其中提示用户键入文件名(将要打开的文件的文件名),如果当前目录中不存在该文件,则会再次提示用户。这是简短的版本:
file = input("Type filename: ")
...
try:
fileContent = open(filename, "r")
...
except FileNotFoundError:
...
当我在Python 3.3x的MacOS X上测试脚本时,当我有意输入错误的文件名时,它可以很好地工作(它在“期望”下执行套件)。
但是,当我想在Python 3.2x的Windows计算机上运行代码时,出现一条错误消息,提示未定义“
FileNotFoundError”。因此,Windows上的Python 3.2认为“ FileNotFoundError”是变量,并且程序因错误退出。
我发现,如果输入文件名无效,则Windows上的Python 3.2会引发“ IOError”。我在Python
2.7的Linux机器上对其进行了测试,它也是IOError。
我的问题是,现在的代码
except "FileNotFoundError":
无法在Windows的Python 3.2上运行,但是如果我将其更改为
except "IOError":
它不再适用于我的Mac。
我该如何解决?我能想到的唯一方法是使用just except
,这是我通常不想要的。
在3.3中,IOError
成为的别名OSError
,并且FileNotFoundError
是的子类OSError
。所以你可以尝试
except (OSError, IOError) as e:
...
这将产生一个相当宽的网络,并且您不能假设未经检查就不会出现“找不到文件”的异常e.errno
,但是它可能涵盖了您的用例。
PEP 3151详细讨论了更改的理由。
问题内容: 为什么list.index会引发异常,而不是使用任意值(例如)?这背后的想法是什么? 对我来说,处理特殊值而不是例外看起来更干净。 编辑 :我没有意识到这是一个潜在的有效值。然而,为什么不别的呢?无值如何? 问题答案: 因为本身就是有效的索引。它可以使用一个不同的值,例如,但在其他情况下(因此)可能没有用,并且仅相当于错误检查,这正是异常处理的目的。
我有一个简单的任务,它创建了一个bat文件,任务名以“server”开头,当执行bat文件时,gradle jobs启动,代码如下: 这个任务曾经工作了一段时间,但现在我开始得到这个错误同步失败:文件找不到StackTrace下面: 我尝试删除项目工作空间中的. gradle文件夹并重新创建它,但它不起作用。重新启动机器和eclipse也没有帮助。 更新:我正在使用gradle 4.5,这似乎是一
我使用的是改型2.0.1。我想处理所有类型的网络错误和异常(如没有网络连接,超时错误,服务器找不到等)我已经找到这个链接。但是其中一些方法在V1.8.0中被否决了。在2.0.1中如何做到这一点?
我发送JSON文件(现在从邮递员)的身体是这样的: 控制器上的方法是: 我犯了个错误- 如何解决这个问题?
问题内容: 即使激活了所有“应用程序开发功能”,我也正在使用“ Internet信息服务7.5”上的AJAX调用来获取JSON文件的“ ERROR 404.3 Not Found”。除JSON文件外,所有其他文件都将被加载。 我在本地计算机上的IIS服务器上运行HTML页面。 如果我直接打开文件,则完全没有问题。当我将文件托管在在线服务器上时,它可以正常工作。 任何快速帮助将不胜感激。 问题答案:
我刚刚开始处理Spring批处理(版本3.0.6)。我有一个工作和内部步骤,我有阅读器->处理器->编写器。 如果读取时未找到文件,我们如何捕获或识别异常。在这种情况下,我想触发电子邮件。