diff --git a/Lib/linecache.py b/Lib/linecache.py
index da62f0d..811f27f 100644
--- a/Lib/linecache.py
+++ b/Lib/linecache.py
@@ -72,13 +72,13 @@
 
     if filename in cache:
         del cache[filename]
-    if not filename or filename[0] + filename[-1] == '<>':
+    if not filename or (filename.startswith('<') and filename.endswith('>')):
         return []
 
     fullname = filename
     try:
         stat = os.stat(fullname)
-    except os.error, msg:
+    except OSError:
         basename = filename
 
         # Try for a __loader__, if available
@@ -115,20 +115,18 @@
                 fullname = os.path.join(dirname, basename)
             except (TypeError, AttributeError):
                 # Not sufficiently string-like to do anything useful with.
+                continue
+            try:
+                stat = os.stat(fullname)
+                break
+            except os.error:
                 pass
-            else:
-                try:
-                    stat = os.stat(fullname)
-                    break
-                except os.error:
-                    pass
         else:
             return []
     try:
-        fp = open(fullname, 'rU')
-        lines = fp.readlines()
-        fp.close()
-    except IOError, msg:
+        with open(fullname, 'rU') as fp:
+            lines = fp.readlines()
+    except IOError:
         return []
     if lines and not lines[-1].endswith('\n'):
         lines[-1] += '\n'
