diff --git a/Lib/keyword.py b/Lib/keyword.py
index a5974b5..a3788a6 100755
--- a/Lib/keyword.py
+++ b/Lib/keyword.py
@@ -61,21 +61,19 @@
     else: optfile = "Lib/keyword.py"
 
     # scan the source file for keywords
-    fp = open(iptfile)
-    strprog = re.compile('"([^"]+)"')
-    lines = []
-    for line in fp:
-        if '{1, "' in line:
-            match = strprog.search(line)
-            if match:
-                lines.append("        '" + match.group(1) + "',\n")
-    fp.close()
+    with open(iptfile) as fp:
+        strprog = re.compile('"([^"]+)"')
+        lines = []
+        for line in fp:
+            if '{1, "' in line:
+                match = strprog.search(line)
+                if match:
+                    lines.append("        '" + match.group(1) + "',\n")
     lines.sort()
 
     # load the output skeleton from the target
-    fp = open(optfile)
-    format = fp.readlines()
-    fp.close()
+    with open(optfile) as fp:
+        format = fp.readlines()
 
     # insert the lines of keywords
     try:
diff --git a/Lib/pdb.py b/Lib/pdb.py
index 3362ea1..83ff585 100755
--- a/Lib/pdb.py
+++ b/Lib/pdb.py
@@ -155,21 +155,15 @@
         if 'HOME' in os.environ:
             envHome = os.environ['HOME']
             try:
-                rcFile = open(os.path.join(envHome, ".pdbrc"))
+                with open(os.path.join(envHome, ".pdbrc")) as rcFile:
+                    self.rcLines.extend(rcFile)
             except IOError:
                 pass
-            else:
-                for line in rcFile.readlines():
-                    self.rcLines.append(line)
-                rcFile.close()
         try:
-            rcFile = open(".pdbrc")
+            with open(".pdbrc") as rcFile:
+                self.rcLines.extend(rcFile)
         except IOError:
             pass
-        else:
-            for line in rcFile.readlines():
-                self.rcLines.append(line)
-            rcFile.close()
 
         self.commands = {} # associates a command list to breakpoint numbers
         self.commands_doprompt = {} # for each bp num, tells if the prompt
diff --git a/Lib/platform.py b/Lib/platform.py
index f7ffd00..b9bc303 100755
--- a/Lib/platform.py
+++ b/Lib/platform.py
@@ -200,9 +200,8 @@
     """
     if os.path.exists('/var/adm/inst-log/info'):
         # SuSE Linux stores distribution information in that file
-        info = open('/var/adm/inst-log/info').readlines()
         distname = 'SuSE'
-        for line in info:
+        for line in open('/var/adm/inst-log/info'):
             tv = line.split()
             if len(tv) == 2:
                 tag,value = tv
@@ -217,8 +216,7 @@
 
     if os.path.exists('/etc/.installed'):
         # Caldera OpenLinux has some infos in that file (thanks to Colin Kong)
-        info = open('/etc/.installed').readlines()
-        for line in info:
+        for line in open('/etc/.installed'):
             pkg = line.split('-')
             if len(pkg) >= 2 and pkg[0] == 'OpenLinux':
                 # XXX does Caldera support non Intel platforms ? If yes,
@@ -327,9 +325,8 @@
         return _dist_try_harder(distname,version,id)
 
     # Read the first line
-    f = open('/etc/'+file, 'r')
-    firstline = f.readline()
-    f.close()
+    with open('/etc/'+file, 'r') as f:
+        firstline = f.readline()
     _distname, _version, _id = _parse_release_file(firstline)
 
     if _distname and full_distribution_name:
diff --git a/Lib/turtle.py b/Lib/turtle.py
index 6f06059..5185f3c 100644
--- a/Lib/turtle.py
+++ b/Lib/turtle.py
@@ -169,9 +169,8 @@
 
 def config_dict(filename):
     """Convert content of config-file into dictionary."""
-    f = open(filename, "r")
-    cfglines = f.readlines()
-    f.close()
+    with open(filename, "r") as f:
+        cfglines = f.readlines()
     cfgdict = {}
     for line in cfglines:
         line = line.strip()
