Fix resource warnings
diff --git a/pre_commit_hooks/autopep8_wrapper.py b/pre_commit_hooks/autopep8_wrapper.py
index b2d2d0c..087fe3f 100644
--- a/pre_commit_hooks/autopep8_wrapper.py
+++ b/pre_commit_hooks/autopep8_wrapper.py
@@ -14,7 +14,8 @@
 
     retv = 0
     for filename in args.files:
-        original_contents = io.open(filename, encoding='UTF-8').read()
+        with io.open(filename, encoding='UTF-8') as f:
+            original_contents = f.read()
         new_contents = autopep8.fix_code(original_contents, args)
         if original_contents != new_contents:
             print('Fixing {}'.format(filename))
diff --git a/pre_commit_hooks/check_ast.py b/pre_commit_hooks/check_ast.py
index 1090300..ded65e4 100644
--- a/pre_commit_hooks/check_ast.py
+++ b/pre_commit_hooks/check_ast.py
@@ -18,7 +18,8 @@
     for filename in args.filenames:
 
         try:
-            ast.parse(open(filename, 'rb').read(), filename=filename)
+            with open(filename, 'rb') as f:
+                ast.parse(f.read(), filename=filename)
         except SyntaxError:
             print('{}: failed parsing with {} {}:'.format(
                 filename,
diff --git a/pre_commit_hooks/check_builtin_literals.py b/pre_commit_hooks/check_builtin_literals.py
index b7f0c00..4a4b9ce 100644
--- a/pre_commit_hooks/check_builtin_literals.py
+++ b/pre_commit_hooks/check_builtin_literals.py
@@ -47,7 +47,8 @@
 
 
 def check_file_for_builtin_type_constructors(filename, ignore=None, allow_dict_kwargs=True):
-    tree = ast.parse(open(filename, 'rb').read(), filename=filename)
+    with open(filename, 'rb') as f:
+        tree = ast.parse(f.read(), filename=filename)
     visitor = BuiltinTypeVisitor(ignore=ignore, allow_dict_kwargs=allow_dict_kwargs)
     visitor.visit(tree)
     return visitor.builtin_type_calls
diff --git a/pre_commit_hooks/check_docstring_first.py b/pre_commit_hooks/check_docstring_first.py
index 0896812..9988378 100644
--- a/pre_commit_hooks/check_docstring_first.py
+++ b/pre_commit_hooks/check_docstring_first.py
@@ -58,7 +58,8 @@
     retv = 0
 
     for filename in args.filenames:
-        contents = io.open(filename, encoding='UTF-8').read()
+        with io.open(filename, encoding='UTF-8') as f:
+            contents = f.read()
         retv |= check_docstring_first(contents, filename=filename)
 
     return retv
diff --git a/pre_commit_hooks/debug_statement_hook.py b/pre_commit_hooks/debug_statement_hook.py
index 81591dd..5d32277 100644
--- a/pre_commit_hooks/debug_statement_hook.py
+++ b/pre_commit_hooks/debug_statement_hook.py
@@ -36,7 +36,8 @@
 
 def check_file(filename):
     try:
-        ast_obj = ast.parse(open(filename, 'rb').read(), filename=filename)
+        with open(filename, 'rb') as f:
+            ast_obj = ast.parse(f.read(), filename=filename)
     except SyntaxError:
         print('{} - Could not parse ast'.format(filename))
         print()
diff --git a/pre_commit_hooks/string_fixer.py b/pre_commit_hooks/string_fixer.py
index f73f09d..c432682 100644
--- a/pre_commit_hooks/string_fixer.py
+++ b/pre_commit_hooks/string_fixer.py
@@ -32,7 +32,8 @@
 
 
 def fix_strings(filename):
-    contents = io.open(filename, encoding='UTF-8').read()
+    with io.open(filename, encoding='UTF-8') as f:
+        contents = f.read()
     line_offsets = get_line_offsets_by_line_no(contents)
 
     # Basically a mutable string