simplify and modernize updatecache()
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'