8

次の行:

except (IOError, PermissionError, FileNotFoundError) as e:

Python 2.75 で実行すると、次のエラー メッセージが表示されます。

NameError: global name 'PermissionError' is not defined

しかし、python 3.3 ではすべて正常に動作します。

考え/提案?

4

2 に答える 2

14

Python 2.7 にはありませんでしPermissionErrorたが、Python 3.3 ストリームでPEP 3151で導入されました。2.7 の例外のリストについては、こちらを参照してください。

PEP 3151 は、OS および I/O 関連の例外の例外階層をクリーンアップする試みでした。

それ以前は、 をキャッチOSErrorしてチェックerrnoするEPERMか、またはIOErrorをチェックするerrnoのと同等だったと思いますEACCES

Python 3.3 以降で実行しているかどうかをいつでも確認できます。そうでない場合は、独自の PermissionError を作成します。もちろん、それは決してスローされないため、上記の 2 つの可能性もキャッチする必要があります。

于 2013-08-13T02:03:09.077 に答える