]> granicus.if.org Git - python/commitdiff
Added 'grok_environment_error()' function to deal with the various
authorGreg Ward <gward@python.net>
Sat, 17 Jun 2000 02:16:46 +0000 (02:16 +0000)
committerGreg Ward <gward@python.net>
Sat, 17 Jun 2000 02:16:46 +0000 (02:16 +0000)
forms that IOError and OSError can take (taken from core.py).

Lib/distutils/util.py

index 575463843b8890f27a860759c09ad345e155bc83..279f246726a769e23faeb1e8a96b943b27eac7d8 100644 (file)
@@ -154,3 +154,23 @@ def subst_vars (str, local_vars):
 # subst_vars ()
 
 
+def grok_environment_error (exc, prefix="error: "):
+    """Generate a useful error message from an EnvironmentError (IOError or
+    OSError) exception object.  Handles Python 1.5.1 and 1.5.2 styles, and
+    does what it can to deal with exception objects that don't have a
+    filename (which happens when the error is due to a two-file operation,
+    such as 'rename()' or 'link()'.  Returns the error message as a string
+    prefixed with 'prefix'.
+    """
+    # check for Python 1.5.2-style {IO,OS}Error exception objects
+    if hasattr (exc, 'filename') and hasattr (exc, 'strerror'):
+        if exc.filename:
+            error = prefix + "%s: %s" % (exc.filename, exc.strerror)
+        else:
+            # two-argument functions in posix module don't
+            # include the filename in the exception object!
+            error = prefix + "%s" % exc.strerror
+    else:
+        error = prefix + str(exc[-1])
+
+    return error