diff --git a/Lib/base64.py b/Lib/base64.py
index b31c410..f93b3a4 100755
--- a/Lib/base64.py
+++ b/Lib/base64.py
@@ -383,7 +383,8 @@
         if o == '-u': func = decode
         if o == '-t': test(); return
     if args and args[0] != '-':
-        func(open(args[0], 'rb'), sys.stdout.buffer)
+        with open(args[0], 'rb') as f:
+            func(f, sys.stdout.buffer)
     else:
         func(sys.stdin.buffer, sys.stdout.buffer)
 
diff --git a/Lib/mimetypes.py b/Lib/mimetypes.py
index f0da453..874037e 100644
--- a/Lib/mimetypes.py
+++ b/Lib/mimetypes.py
@@ -193,9 +193,8 @@
         list of standard types, else to the list of non-standard
         types.
         """
-        fp = open(filename)
-        self.readfp(fp, strict)
-        fp.close()
+        with open(filename) as fp:
+            self.readfp(fp, strict)
 
     def readfp(self, fp, strict=True):
         """
@@ -302,7 +301,7 @@
         files = knownfiles
     for file in files:
         if os.path.isfile(file):
-            db.readfp(open(file))
+            db.read(file)
     encodings_map = db.encodings_map
     suffix_map = db.suffix_map
     types_map = db.types_map[True]
diff --git a/Python/traceback.c b/Python/traceback.c
index c101933..e74d442 100644
--- a/Python/traceback.c
+++ b/Python/traceback.c
@@ -209,6 +209,7 @@
     PyObject *binary;
     PyObject *fob = NULL;
     PyObject *lineobj = NULL;
+    PyObject *res;
     char buf[MAXPATHLEN+1];
     Py_UNICODE *u, *p;
     Py_ssize_t len;
@@ -254,6 +255,11 @@
             break;
         }
     }
+    res = PyObject_CallMethod(fob, "close", "");
+    if (res)
+        Py_DECREF(res);
+    else
+        PyErr_Clear();
     Py_DECREF(fob);
     if (!lineobj || !PyUnicode_Check(lineobj)) {
         Py_XDECREF(lineobj);
