diff --git a/reviewboard/admin/management/commands/loaddb.py b/reviewboard/admin/management/commands/loaddb.py
index 7857812f70ebf510eea3f2e63fb7e600d41364fe..3ec53ab8fef99e9ec3e215ff15d23de64540963a 100644
--- a/reviewboard/admin/management/commands/loaddb.py
+++ b/reviewboard/admin/management/commands/loaddb.py
@@ -44,55 +44,52 @@ Type 'yes' to continue, or 'no' to cancel: """)
         transaction_setup = False
 
         try:
-            f = open(filename, 'r')
-            line = f.readline()
-
-            m = re.match("^# dbdump v(\d+) - (\d+) objects$", line)
-            if not m:
-                raise CommandError("Unknown dump format\n")
-
-            version = int(m.group(1))
-            totalobjs = int(m.group(2))
-            i = 0
-            prev_pct = -1
-
-            if version != 1:
-                raise CommandError("Unknown dump version\n")
-
-            transaction.commit_unless_managed()
-            transaction.enter_transaction_management()
-            transaction.managed(True)
-            transaction_setup = True
-
-            self.stdout.write("Importing new style dump format (v%s)" %
-                              version)
-            for line in f.xreadlines():
-                if line[0] == "{":
-                    for obj in serializers.deserialize("json",
-                                                       "[%s]" % line):
-                        try:
-                            obj.save()
-                        except Exception as e:
-                            self.stderr.write("Error: %s\n" % e)
-                            self.stderr.write("Line %s: '%s'" % (i, line))
-                elif line[0] != "#":
-                    self.stderr.write("Junk data on line %s" % i)
-
-                db.reset_queries()
-
-                i += 1
-                pct = (i * 100 / totalobjs)
-                if pct != prev_pct:
-                    self.stdout.write("  [%s%%]\r" % pct)
-                    self.stdout.flush()
-                    prev_pct = pct
-
-            f.close()
+            with open(filename, 'r') as f:
+                line = f.readline()
+
+                m = re.match("^# dbdump v(\d+) - (\d+) objects$", line)
+                if not m:
+                    raise CommandError("Unknown dump format\n")
+
+                version = int(m.group(1))
+                totalobjs = int(m.group(2))
+                i = 0
+                prev_pct = -1
+
+                if version != 1:
+                    raise CommandError("Unknown dump version\n")
+
+                transaction.commit_unless_managed()
+                transaction.enter_transaction_management()
+                transaction.managed(True)
+                transaction_setup = True
+
+                self.stdout.write("Importing new style dump format (v%s)" %
+                                  version)
+                for line in f:
+                    if line[0] == "{":
+                        for obj in serializers.deserialize("json",
+                                                           "[%s]" % line):
+                            try:
+                                obj.save()
+                            except Exception as e:
+                                self.stderr.write("Error: %s\n" % e)
+                                self.stderr.write("Line %s: '%s'" % (i, line))
+                    elif line[0] != "#":
+                        self.stderr.write("Junk data on line %s" % i)
+
+                    db.reset_queries()
+
+                    i += 1
+                    pct = (i * 100 / totalobjs)
+                    if pct != prev_pct:
+                        self.stdout.write("  [%s%%]\r" % pct)
+                        self.stdout.flush()
+                        prev_pct = pct
 
             transaction.commit()
             transaction.leave_transaction_management()
         except Exception as e:
-            f.close()
             raise CommandError("Problem installing '%s': %s\n" %
                                (filename, str(e)))
 
diff --git a/reviewboard/ssh/storage.py b/reviewboard/ssh/storage.py
index df9815b5c4a09508becae2c5c7261b027cd187ad..12ab2aaf78c85747984d7b453d2bd49aa27bd9dd 100644
--- a/reviewboard/ssh/storage.py
+++ b/reviewboard/ssh/storage.py
@@ -145,15 +145,12 @@ class FileSSHStorage(SSHStorage):
 
         if os.path.exists(filename):
             try:
-                fp = open(filename, 'r')
+                with open(filename, 'r') as f:
+                    for line in f:
+                        line = line.strip()
 
-                for line in fp.xreadlines():
-                    line = line.strip()
-
-                    if line and line[0] != '#':
-                        lines.append(line)
-
-                fp.close()
+                        if line and line[0] != '#':
+                            lines.append(line)
             except IOError as e:
                 logging.error('Unable to read host keys file %s: %s'
                               % (filename, e))
