我有一个脚本,用户需要输入文件名(要打开的文件),如果该文件不存在于当前目录中,则会提示用户重新输入。以下是简短版本:
file = input("Type filename: ")
...
try:
fileContent = open(filename, "r")
...
except FileNotFoundError:
...
当我在我的MacOS X上使用Python 3.3x测试脚本时,如果我故意输入错误的文件名(它会在“expect”下执行),它能够完美地运行。
然而,当我想在Windows计算机上使用Python 3.2x运行我的代码时,我会收到一个错误,说"FileNotFoundError"未定义。因此,Windows上的Python 3.2认为"FileNotFoundError"是一个变量,并且程序以错误退出。
我发现,在Windows上,如果输入的文件名无效,Python 3.2会抛出"I/O错误"。我在我的Linux机器上使用Python 2.7进行了测试,也是一个I/O错误。
我的问题是,带有
的代码在Windows上无法正常工作,但在其他操作系统上可以正常工作。except "FileNotFoundError":
无法在Windows上的Python 3.2上运行,但如果我将其更改为
except "IOError":
我的Mac上不能再运行它了。
我该怎么解决?我能想到的唯一方法是仅使用except
,但通常我不想这样做。