diff --git a/Lib/test/test_glob.py b/Lib/test/test_glob.py
index f23dcf1..8a6ef7f 100644
--- a/Lib/test/test_glob.py
+++ b/Lib/test/test_glob.py
@@ -2,35 +2,7 @@
 from test.test_support import run_unittest, TESTFN
 import glob
 import os
-
-def mkdirs(fname):
-    if os.path.exists(fname) or fname == '':
-        return
-    base, file = os.path.split(fname)
-    mkdirs(base)
-    os.mkdir(fname)
-
-def touchfile(fname):
-    base, file = os.path.split(fname)
-    mkdirs(base)
-    f = open(fname, 'w')
-    f.close()
-
-def deltree(fname):
-    for f in os.listdir(fname):
-        fullname = os.path.join(fname, f)
-        if os.path.isdir(fullname):
-            deltree(fullname)
-        else:
-            try:
-                os.unlink(fullname)
-            except:
-                pass
-    try:
-        os.rmdir(fname)
-    except:
-        pass
-
+import shutil
 
 class GlobTests(unittest.TestCase):
 
@@ -38,7 +10,12 @@
         return os.path.normpath(os.path.join(self.tempdir, *parts))
 
     def mktemp(self, *parts):
-        touchfile(self.norm(*parts))
+        filename = self.norm(*parts)
+        base, file = os.path.split(filename)
+        if not os.path.exists(base):
+            os.makedirs(base)
+        f = open(filename, 'w')
+        f.close()
 
     def setUp(self):
         self.tempdir = TESTFN+"_dir"
@@ -53,7 +30,7 @@
             os.symlink(self.norm('broken'), self.norm('sym2'))
 
     def tearDown(self):
-        deltree(self.tempdir)
+        shutil.rmtree(self.tempdir)
 
     def glob(self, *parts):
         if len(parts) == 1:
