静かなる名辞

pythonとプログラミングのこと


【python】windowsではopenの引数にフォルダを指定するとPermissionErrorになる

 最近はじめて知った仕様なのですが、windowsではタイトルの通りになります。

 Linuxの場合。

$ mkdir hoge
$ python
>>> open("hoge")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IsADirectoryError: [Errno 21] Is a directory: 'hoge'

 大変わかりやすいエラーが出てくれます。hogeはディレクトリだからファイルとしてopenできない。当たり前です。

 windowsで同じことをやると、

>mkdir hoge
>python
>>> open("hoge")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
PermissionError: [Errno 13] Permission denied: 'hoge'

 なんですか、このPermissionError: [Errno 13]というエラーは。これを見て最初に思うのは「なんか権限設定ミスったかな」ということですが、さにあらず。うっかりディレクトリをファイルとしてopenしようとしてしまっているのです。

 windowsを中心に使う人は覚えておきましょう。