gpt4 book ai didi

Python 的 "open()"为 "file not found"引发不同的错误 - 如何处理这两个异常?

转载 作者:IT老高 更新时间:2023-10-28 21:34:43 27 4
gpt4 key购买 nike

我有一个脚本,提示用户输入(要打开的文件的)文件名,如果当前目录中不存在该文件,则会再次提示用户。这是简短的版本:

file = input("Type filename: ")

...
try:
fileContent = open(filename, "r")
...
except FileNotFoundError:
...

当我在我的 MacOS X 上使用 Python 3.3x 测试我的脚本时,当我故意输入错误的文件名时它运行得非常好(它在“预期”下执行套件)。

但是,当我想运行我的代码时在 Python 3.2x 的 Windows 计算机上,我收到一条错误消息,指出“FileNotFoundError”未定义。因此,Windows 上的 Python 3.2 认为“FileNotFoundError”是一个变量,程序会因错误而退出。

我发现如果输入文件名无效,Windows 上的 Python 3.2 会抛出“IOError”。我在我的 Linux 机器上用 Python 2.7 对其进行了测试,它也是一个 IOError。

我现在的问题是,带有

的代码
except "FileNotFoundError":

不会在 Windows 的 Python 3.2 上运行,但如果我将其更改为

except "IOError":

它不再在我的 Mac 上工作了。

我该如何解决?我能想到的唯一方法就是使用except,我通常不想要。

最佳答案

在 3.3 中,IOError became an alias for OSError , FileNotFoundErrorOSError 的子类。所以你可以试试

except (OSError, IOError) as e:
...

这将撒下一个非常广泛的网络,并且您不能在不检查 e.errno 的情况下假定异常是“找不到文件”,但它可能涵盖您的用例。

PEP 3151详细讨论更改的基本原理。

关于Python 的 "open()"为 "file not found"引发不同的错误 - 如何处理这两个异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15032108/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com