Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

os.stat on Windows "nul" file

Why can't I call os.stat on the special Windows file nul?

>>> import os
>>> os.stat('nul')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
WindowsError: [Error 87] The parameter is incorrect: 'nul'

I can open it:

>>> f = open('nul', 'r')
>>> f.read(10)
''

I was hoping to check for special files like /dev/null and nul in a cross-platform way with stat.S_ISCHR and was surprised to find that I can't stat a file that I can open.

like image 606
jterrace Avatar asked Dec 05 '12 01:12

jterrace


2 Answers

According to this old Python bug, it's supposed to be that way:

http://bugs.python.org/issue1311

like image 104
khagler Avatar answered Sep 20 '22 07:09

khagler


This is the behavior of the underlying Win32 GetFileAttributesEx() and CreateFile() functions, which are eventually called by os.stat() and open().

like image 28
Krzysztof Kosiński Avatar answered Sep 21 '22 07:09

Krzysztof Kosiński