Use 'with' statements.
authorArfrever Frehtes Taifersar Arahesis <Arfrever@Apache.Org>
Wed, 2 Oct 2013 09:49:46 +0000 (11:49 +0200)
committerArfrever Frehtes Taifersar Arahesis <Arfrever@Apache.Org>
Wed, 2 Oct 2013 09:49:46 +0000 (11:49 +0200)
pym/portage/output.py
pym/portage/util/__init__.py

index 20471bccb63aac6582613525465c0206c2375bc8..fc1b04233cb34afc0f2e3bd7e1e4a5bf72371aff 100644 (file)
@@ -164,15 +164,12 @@ def _parse_color_map(config_root='/', onerror=None):
                        token = token[1:-1]
                return token
 
-       f = None
        try:
-               f = io.open(_unicode_encode(myfile,
+               with io.open(_unicode_encode(myfile,
                        encoding=_encodings['fs'], errors='strict'),
-                       mode='r', encoding=_encodings['content'], errors='replace')
-               lineno = 0
-               for line in f:
-                       lineno += 1
-
+                       mode='r', encoding=_encodings['content'], errors='replace') as f:
+                       lines = f.readlines()
+               for lineno, line in enumerate(lines):
                        commenter_pos = line.find("#")
                        line = line[:commenter_pos].strip()
                        
@@ -230,9 +227,6 @@ def _parse_color_map(config_root='/', onerror=None):
                elif e.errno == errno.EACCES:
                        raise PermissionDenied(myfile)
                raise
-       finally:
-               if f is not None:
-                       f.close()
 
 def nc_len(mystr):
        tmp = re.sub(esc_seq + "^m]+m", "", mystr);
index 8f311bf3b77e6252159b408aa3d50e328de39b0d..e94849f8a3cb5617a675c7494028d0d420849e20 100644 (file)
@@ -406,16 +406,15 @@ def read_corresponding_eapi_file(filename, default="0"):
 
        eapi = None
        try:
-               f = io.open(_unicode_encode(eapi_file,
+               with io.open(_unicode_encode(eapi_file,
                        encoding=_encodings['fs'], errors='strict'),
-                       mode='r', encoding=_encodings['repo.content'], errors='replace')
-               lines = f.readlines()
+                       mode='r', encoding=_encodings['repo.content'], errors='replace') as f:
+                       lines = f.readlines()
                if len(lines) == 1:
                        eapi = lines[0].rstrip("\n")
                else:
                        writemsg(_("--- Invalid 'eapi' file (doesn't contain exactly one line): %s\n") % (eapi_file),
                                noiselevel=-1)
-               f.close()
        except IOError:
                pass
 
@@ -546,14 +545,13 @@ def grablines(myfilename, recursive=0, remember_source_file=False):
 
        else:
                try:
-                       myfile = io.open(_unicode_encode(myfilename,
+                       with io.open(_unicode_encode(myfilename,
                                encoding=_encodings['fs'], errors='strict'),
-                               mode='r', encoding=_encodings['content'], errors='replace')
-                       if remember_source_file:
-                               mylines = [(line, myfilename) for line in myfile.readlines()]
-                       else:
-                               mylines = myfile.readlines()
-                       myfile.close()
+                               mode='r', encoding=_encodings['content'], errors='replace') as myfile:
+                               if remember_source_file:
+                                       mylines = [(line, myfilename) for line in myfile.readlines()]
+                               else:
+                                       mylines = myfile.readlines()
                except IOError as e:
                        if e.errno == PermissionDenied.errno:
                                raise PermissionDenied(myfilename)