diff --git a/Lib/linecache.py b/Lib/linecache.py index da62f0d1751..811f27fe365 100644 --- a/Lib/linecache.py +++ b/Lib/linecache.py @@ -72,13 +72,13 @@ def updatecache(filename, module_globals=None): 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 @@ def updatecache(filename, module_globals=None): 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'