By Vasudev Ram
While browsing the Python standard library docs, in particular the module os.errno, I got the idea of writing this small utility to display os.errno error codes and error names, which are stored in the dict os.errno.errorcode:
Here is the program, os_errno_info.py:
In the above Python command line, you can of course skip the "&& gvim out2" part. It is just there to automatically open the output file in gVim (text editor) after the utility runs.
The above output was from running it with Python 2.
The utility is written to also work with Python 3.
To change the command line to use Python 3, just change 2 to 3 everywhere in the above Python command :)
(You need to install or already have py, the Python Launcher for Windows, for the py command to work. If you don't have it, or are not on Windows, use python instead of py -2 or py -3 in the above python command line - after having set your OS PATH to point to Python 2 or Python 3 as wanted.)
The only differences in the output are the version message (2.x vs 3.x), and the number of error codes - 86 in Python 2 vs. 101 in Python 3.
Unix people will recognize many of the messages (EACCES, ENOENT, EBADF, etc.) as being familiar ones that you get while programming on Unix.
The error names starting with W are probably Windows-specific errors. Not sure how to get the messages for those, need to look it up. (It currently shows "Unknown error" for them.)
This above Python utility was inspired by an earlier auxiliary utility I wrote, called showsyserr.c, as part of my IBM developerWorks article, Developing a Linux command-line utility (not the main utility described in the article). Following (recursively) the link in the previous sentence will lead you to the code for both the auxiliary and the main utility, as well as the PDF version of the article.
Enjoy.
- Vasudev Ram - Online Python training and consultingGet updates (via Gumroad) on my forthcoming apps and content. Jump to posts: Python * DLang * xtopdfSubscribe to my blog by emailMy ActiveState Code recipesFollow me on: LinkedIn * TwitterManaged WordPress Hosting by FlyWheel
While browsing the Python standard library docs, in particular the module os.errno, I got the idea of writing this small utility to display os.errno error codes and error names, which are stored in the dict os.errno.errorcode:
Here is the program, os_errno_info.py:
from __future__ import print_functionAnd here is the output on running it:
'''
os_errno_info.py
To show the error codes and
names from the os.errno module.
Author: Vasudev Ram
Copyright 2017 Vasudev Ram
Web site: https://vasudevram.github.io
Blog: https://jugad2.blogspot.com
Product store: https://gumroad.com/vasudevram
'''
import sys
import os
def main():
print("Showing error codes and names\nfrom the os.errno module:")
print("Python sys.version:", sys.version[:6])
print("Number of error codes:", len(os.errno.errorcode))
print("{0:>4}{1:>8} {2:<20} {3:<}".format(\
"Idx", "Code", "Name", "Message"))
for idx, key in enumerate(sorted(os.errno.errorcode)):
print("{0:>4}{1:>8} {2:<20} {3:<}".format(\
idx, key, os.errno.errorcode[key], os.strerror(key)))
if __name__ == '__main__':
main()
$ py -2 os_errno_info.py >out2 && gvim out2
Showing error codes and names
from the os.errno module:
Python sys.version: 2.7.12
Number of error codes: 86
Idx Code Name Message
0 1 EPERM Operation not permitted
1 2 ENOENT No such file or directory
2 3 ESRCH No such process
3 4 EINTR Interrupted function call
4 5 EIO Input/output error
5 6 ENXIO No such device or address
6 7 E2BIG Arg list too long
7 8 ENOEXEC Exec format error
8 9 EBADF Bad file descriptor
9 10 ECHILD No child processes
10 11 EAGAIN Resource temporarily unavailable
11 12 ENOMEM Not enough space
12 13 EACCES Permission denied
13 14 EFAULT Bad address
14 16 EBUSY Resource device
15 17 EEXIST File exists
16 18 EXDEV Improper link
17 19 ENODEV No such device
18 20 ENOTDIR Not a directory
19 21 EISDIR Is a directory
20 22 EINVAL Invalid argument
21 23 ENFILE Too many open files in system
22 24 EMFILE Too many open files
23 25 ENOTTY Inappropriate I/O control operation
24 27 EFBIG File too large
25 28 ENOSPC No space left on device
26 29 ESPIPE Invalid seek
27 30 EROFS Read-only file system
28 31 EMLINK Too many links
29 32 EPIPE Broken pipe
30 33 EDOM Domain error
31 34 ERANGE Result too large
32 36 EDEADLOCK Resource deadlock avoided
33 38 ENAMETOOLONG Filename too long
34 39 ENOLCK No locks available
35 40 ENOSYS Function not implemented
36 41 ENOTEMPTY Directory not empty
37 42 EILSEQ Illegal byte sequence
38 10000 WSABASEERR Unknown error
39 10004 WSAEINTR Unknown error
40 10009 WSAEBADF Unknown error
41 10013 WSAEACCES Unknown error
42 10014 WSAEFAULT Unknown error
43 10022 WSAEINVAL Unknown error
44 10024 WSAEMFILE Unknown error
45 10035 WSAEWOULDBLOCK Unknown error
46 10036 WSAEINPROGRESS Unknown error
47 10037 WSAEALREADY Unknown error
48 10038 WSAENOTSOCK Unknown error
49 10039 WSAEDESTADDRREQ Unknown error
50 10040 WSAEMSGSIZE Unknown error
51 10041 WSAEPROTOTYPE Unknown error
52 10042 WSAENOPROTOOPT Unknown error
53 10043 WSAEPROTONOSUPPORT Unknown error
54 10044 WSAESOCKTNOSUPPORT Unknown error
55 10045 WSAEOPNOTSUPP Unknown error
56 10046 WSAEPFNOSUPPORT Unknown error
57 10047 WSAEAFNOSUPPORT Unknown error
58 10048 WSAEADDRINUSE Unknown error
59 10049 WSAEADDRNOTAVAIL Unknown error
60 10050 WSAENETDOWN Unknown error
61 10051 WSAENETUNREACH Unknown error
62 10052 WSAENETRESET Unknown error
63 10053 WSAECONNABORTED Unknown error
64 10054 WSAECONNRESET Unknown error
65 10055 WSAENOBUFS Unknown error
66 10056 WSAEISCONN Unknown error
67 10057 WSAENOTCONN Unknown error
68 10058 WSAESHUTDOWN Unknown error
69 10059 WSAETOOMANYREFS Unknown error
70 10060 WSAETIMEDOUT Unknown error
71 10061 WSAECONNREFUSED Unknown error
72 10062 WSAELOOP Unknown error
73 10063 WSAENAMETOOLONG Unknown error
74 10064 WSAEHOSTDOWN Unknown error
75 10065 WSAEHOSTUNREACH Unknown error
76 10066 WSAENOTEMPTY Unknown error
77 10067 WSAEPROCLIM Unknown error
78 10068 WSAEUSERS Unknown error
79 10069 WSAEDQUOT Unknown error
80 10070 WSAESTALE Unknown error
81 10071 WSAEREMOTE Unknown error
82 10091 WSASYSNOTREADY Unknown error
83 10092 WSAVERNOTSUPPORTED Unknown error
84 10093 WSANOTINITIALISED Unknown error
85 10101 WSAEDISCON Unknown error
In the above Python command line, you can of course skip the "&& gvim out2" part. It is just there to automatically open the output file in gVim (text editor) after the utility runs.
The above output was from running it with Python 2.
The utility is written to also work with Python 3.
To change the command line to use Python 3, just change 2 to 3 everywhere in the above Python command :)
(You need to install or already have py, the Python Launcher for Windows, for the py command to work. If you don't have it, or are not on Windows, use python instead of py -2 or py -3 in the above python command line - after having set your OS PATH to point to Python 2 or Python 3 as wanted.)
The only differences in the output are the version message (2.x vs 3.x), and the number of error codes - 86 in Python 2 vs. 101 in Python 3.
Unix people will recognize many of the messages (EACCES, ENOENT, EBADF, etc.) as being familiar ones that you get while programming on Unix.
The error names starting with W are probably Windows-specific errors. Not sure how to get the messages for those, need to look it up. (It currently shows "Unknown error" for them.)
This above Python utility was inspired by an earlier auxiliary utility I wrote, called showsyserr.c, as part of my IBM developerWorks article, Developing a Linux command-line utility (not the main utility described in the article). Following (recursively) the link in the previous sentence will lead you to the code for both the auxiliary and the main utility, as well as the PDF version of the article.
Enjoy.
- Vasudev Ram - Online Python training and consultingGet updates (via Gumroad) on my forthcoming apps and content. Jump to posts: Python * DLang * xtopdfSubscribe to my blog by emailMy ActiveState Code recipesFollow me on: LinkedIn * TwitterManaged WordPress Hosting by FlyWheel