diff --git a/Doc/tools/findcsyms b/Doc/tools/findcsyms
index ac9b754..d68c3ce 100755
--- a/Doc/tools/findcsyms
+++ b/Doc/tools/findcsyms
@@ -127,7 +127,7 @@
                 print_list(undocumented, "Undocumented symbols")
         else:
             print_list(L)
-    except IOError, e:
+    except IOError as e:
         if e.errno != errno.EPIPE:
             raise
 
diff --git a/Doc/tools/listmodules b/Doc/tools/listmodules
index 03e7b5d..8469972 100755
--- a/Doc/tools/listmodules
+++ b/Doc/tools/listmodules
@@ -53,7 +53,7 @@
         opts, args = getopt.getopt(
             args, "abchi:",
             ["annotate", "built-in", "categorize", "help", "ignore-from="])
-    except getopt.error, msg:
+    except getopt.error as msg:
         sys.stdout = sys.stderr
         print msg
         print
diff --git a/Doc/tools/mkhowto b/Doc/tools/mkhowto
index 21cd6fb..02a215d 100755
--- a/Doc/tools/mkhowto
+++ b/Doc/tools/mkhowto
@@ -599,7 +599,7 @@
     options = Options()
     try:
         args = options.parse(sys.argv[1:])
-    except getopt.error, msg:
+    except getopt.error as msg:
         error(options, msg)
     if not args:
         # attempt to locate single .tex file in current directory:
diff --git a/Doc/tools/mksourcepkg b/Doc/tools/mksourcepkg
index 4b21f77..7d5bd73 100755
--- a/Doc/tools/mksourcepkg
+++ b/Doc/tools/mksourcepkg
@@ -45,7 +45,7 @@
           opts, args = getopt.getopt(sys.argv[1:], "Aabgtzq",
                                      ["all", "bzip2", "gzip", "tools", "zip",
                                       "quiet", "anonymous"])
-     except getopt.error, e:
+     except getopt.error as e:
           usage(warning=str(e))
           sys.exit(2)
      if len(args) not in (1, 2):
diff --git a/Doc/tools/prechm.py b/Doc/tools/prechm.py
index 57a43fd..db1f965 100644
--- a/Doc/tools/prechm.py
+++ b/Doc/tools/prechm.py
@@ -448,7 +448,7 @@
 def openfile(file):
     try:
         p = open(file, "w")
-    except IOError, msg:
+    except IOError as msg:
         print file, ":", msg
         sys.exit(1)
     return p
@@ -466,7 +466,7 @@
 
     try:
         optlist, args = getopt.getopt(args, 'ckpv:')
-    except getopt.error, msg:
+    except getopt.error as msg:
         print msg
         usage()
 
diff --git a/Doc/tools/sgmlconv/docfixer.py b/Doc/tools/sgmlconv/docfixer.py
index 81519ee..961e3b8 100755
--- a/Doc/tools/sgmlconv/docfixer.py
+++ b/Doc/tools/sgmlconv/docfixer.py
@@ -1039,7 +1039,8 @@
     #
     try:
         write_esis(fragment, ofp, knownempty)
-    except IOError, (err, msg):
+    except IOError as e:
+        (err, msg) = e
         # Ignore EPIPE; it just means that whoever we're writing to stopped
         # reading.  The rest of the output would be ignored.  All other errors
         # should still be reported,
diff --git a/Doc/tools/sgmlconv/esis2sgml.py b/Doc/tools/sgmlconv/esis2sgml.py
index b6f9a44..81294d1 100755
--- a/Doc/tools/sgmlconv/esis2sgml.py
+++ b/Doc/tools/sgmlconv/esis2sgml.py
@@ -255,7 +255,8 @@
         if xml and xmldecl:
             opf.write('<?xml version="1.0" encoding="iso8859-1"?>\n')
         convert(ifp, ofp, xml=xml, autoclose=autoclose, verbatims=verbatims)
-    except IOError, (err, msg):
+    except IOError as e:
+        (err, msg) = e
         if err != errno.EPIPE:
             raise
 
diff --git a/Doc/tools/sgmlconv/esistools.py b/Doc/tools/sgmlconv/esistools.py
index 833fea1..6dc5eaa 100644
--- a/Doc/tools/sgmlconv/esistools.py
+++ b/Doc/tools/sgmlconv/esistools.py
@@ -139,7 +139,7 @@
     def _get_token(self, fp):
         try:
             line = fp.readline()
-        except IOError, e:
+        except IOError as e:
             e = SAXException("I/O error reading input stream", e)
             self.getErrorHandler().fatalError(e)
             return
diff --git a/Doc/tools/sgmlconv/latex2esis.py b/Doc/tools/sgmlconv/latex2esis.py
index 643ef2c..cbc9828 100755
--- a/Doc/tools/sgmlconv/latex2esis.py
+++ b/Doc/tools/sgmlconv/latex2esis.py
@@ -397,7 +397,8 @@
     c = Conversion(ifp, ofp, table)
     try:
         c.convert()
-    except IOError, (err, msg):
+    except IOError as e:
+        (err, msg) = e
         if err != errno.EPIPE:
             raise
 
