OSError should be raised for any non-symlink (e.g. directory or regular file):
$ python2.7 -c 'import os; print(os.readlink("/"))'
Traceback (most recent call last):
File "<string>", line 1, in <module>
OSError: [Errno 22] Invalid argument: '/'
$ python2.7 -c 'import os; print(os.readlink("/bin"))'
Traceback (most recent call last):
File "<string>", line 1, in <module>
OSError: [Errno 22] Invalid argument: '/bin'
$ python2.7 -c 'import os; print(os.readlink("/bin/ls"))'
Traceback (most recent call last):
File "<string>", line 1, in <module>
OSError: [Errno 22] Invalid argument: '/bin/ls'
$ jython2.7 -c 'import os; print(os.readlink("/"))'
None
$ jython2.7 -c 'import os; print(os.readlink("/bin"))'
None
$ jython2.7 -c 'import os; print(os.readlink("/bin/ls"))'
None |