Add support of ignore comment on the top of the file (#291)

* Add support of ignore comment on the top of the file

* test_autoflake: add some empty lines to make test more realistic

---------

Co-authored-by: francisco souza <108725+fsouza@users.noreply.github.com>
diff --git a/README.md b/README.md
index c3fc86b..2efb949 100644
--- a/README.md
+++ b/README.md
@@ -127,6 +127,11 @@
   -s, --stdout          print changed text to stdout. defaults to true when formatting stdin, or to false otherwise
 ```
 
+To ignore the file, you can also add a comment to the top of the file:
+```python
+# autoflake: skip_file
+import os
+```
 
 ## Configuration
 
diff --git a/autoflake.py b/autoflake.py
index 13e3136..8f5dbf3 100755
--- a/autoflake.py
+++ b/autoflake.py
@@ -63,6 +63,11 @@
 
 MAX_PYTHON_FILE_DETECTION_BYTES = 1024
 
+IGNORE_COMMENT_REGEX = re.compile(
+    r"\s*#\s{1,}autoflake:\s{1,}\bskip_file\b",
+    re.MULTILINE,
+)
+
 
 def standard_paths() -> Iterable[str]:
     """Yield paths to standard modules."""
@@ -904,6 +909,9 @@
     if not source:
         return source
 
+    if IGNORE_COMMENT_REGEX.search(source):
+        return source
+
     # pyflakes does not handle "nonlocal" correctly.
     if "nonlocal" in source:
         remove_unused_variables = False
diff --git a/test_autoflake.py b/test_autoflake.py
index 9971639..203d5e9 100755
--- a/test_autoflake.py
+++ b/test_autoflake.py
@@ -2008,6 +2008,49 @@
 
     """System tests."""
 
+    def test_skip_file(self) -> None:
+        skipped_file_file_text = """
+# autoflake: skip_file
+import re
+import os
+import my_own_module
+x = 1
+"""
+        with temporary_file(skipped_file_file_text) as filename:
+            output_file = io.StringIO()
+            autoflake._main(
+                argv=["my_fake_program", filename, "--stdout"],
+                standard_out=output_file,
+                standard_error=None,
+            )
+            self.assertEqual(
+                skipped_file_file_text,
+                output_file.getvalue(),
+            )
+
+    def test_skip_file_with_shebang_respect(self) -> None:
+        skipped_file_file_text = """
+#!/usr/bin/env python3
+
+# autoflake: skip_file
+
+import re
+import os
+import my_own_module
+x = 1
+"""
+        with temporary_file(skipped_file_file_text) as filename:
+            output_file = io.StringIO()
+            autoflake._main(
+                argv=["my_fake_program", filename, "--stdout"],
+                standard_out=output_file,
+                standard_error=None,
+            )
+            self.assertEqual(
+                skipped_file_file_text,
+                output_file.getvalue(),
+            )
+
     def test_diff(self) -> None:
         with temporary_file(
             """\