diff --git a/dead.py b/dead.py
index 969acac..03695bb 100644
--- a/dead.py
+++ b/dead.py
@@ -210,6 +210,7 @@ def _filenames(
         if (
                 not files_re.search(filename) or
                 exclude_re.search(filename) or
+                not os.path.exists(filename) or
                 'python' not in tags_from_path(filename)
         ):
             continue

diff --git a/tests/dead_test.py b/tests/dead_test.py
index 3dee231..15917bf 100644
--- a/tests/dead_test.py
+++ b/tests/dead_test.py
@@ -76,6 +76,14 @@ def test_is_marked_as_used(git_dir, capsys, s):
     assert not any(capsys.readouterr())
 
 
+def test_deleted_file_dont_raise_error(git_dir):
+    module = git_dir.join('test-module.py')
+    module.write('print(1)')
+    subprocess.check_call(('git', 'add', '.'))
+    module.remove()
+    assert not dead.main(())
+
+
 def test_setup_py_entrypoints_mark_as_used(git_dir, capsys):
     git_dir.join('setup.py').write(
         'from setuptools import setup\n'

dead raises ValueError in case a file is deleted (since it remains listed with "git ls-files")
Hi,
Just hit this twice in a week. I'm using `dead` to clean up a large codebase and realized that as soon as you delete a file, `dead` starts complaining that it can't find that same file in subsequent run
```
Traceback (most recent call last):
  File "/home/***/.pyenv/versions/3.6.5/envs/cmp/bin/dead", line 8, in <module>
    sys.exit(main())
  File "/home/***/.pyenv/versions/3.6.5/envs/cmp/lib/python3.6/site-packages/dead.py", line 302, in main
    for filename, is_test in _filenames(files_re, exclude_re, tests_re):
  File "/home/***/.pyenv/versions/3.6.5/envs/cmp/lib/python3.6/site-packages/dead.py", line 213, in _filenames
    'python' not in tags_from_path(filename)
  File "/home/***/.pyenv/versions/3.6.5/envs/cmp/lib/python3.6/site-packages/identify/identify.py", line 38, in tags_from_path
    raise ValueError('{} does not exist.'.format(path))
ValueError: myapp/lib/helpers.py does not exist.
```
I quickly check and the problem is that it relies on `git ls-files`, which lists also the deleted files.
The workaround is to commit the change, then re-execute `dead` but I thought it is worth fixing this.

I havn't seen an option in `git ls-files` to lists everything except the deleted file but I see that I can list the deleted files with `git ls-files --deleted` so I guess we can use that to subtract the deleted files.

Let me know your thoughts and if that seems like a good approach, I'd be happy to implement it.
tests/dead_test.py::test_deleted_file_dont_raise_error
tests/dead_test.py::test_dead_disable_regex_matching[# tests/dead_test.py::test_dead_disable_regex_matching[#dead:disable] tests/dead_test.py::test_dead_disable_regex_not_matching[# tests/dead_test.py::test_is_marked_as_used[x tests/dead_test.py::test_is_marked_as_used[def tests/dead_test.py::test_is_marked_as_used[async tests/dead_test.py::test_is_marked_as_used[class tests/dead_test.py::test_is_marked_as_used[from tests/dead_test.py::test_is_marked_as_used[import tests/dead_test.py::test_is_marked_as_used[MyStr tests/dead_test.py::test_setup_py_entrypoints_mark_as_used tests/dead_test.py::test_setup_cfg_entry_points_marked_as_used tests/dead_test.py::test_setup_cfg_without_entry_points tests/dead_test.py::test_setup_cfg_without_attribute_entry_point tests/dead_test.py::test_never_referenced tests/dead_test.py::test_assignment_not_counted_as_reference tests/dead_test.py::test_only_referenced_in_tests tests/dead_test.py::test_unused_dead_disable_comment tests/dead_test.py::test_partially_disabled tests/dead_test.py::test_unused_argument tests/dead_test.py::test_unused_argument_in_scope tests/dead_test.py::test_using_an_argument tests/dead_test.py::test_ignore_unused_arguments_stubs tests/dead_test.py::test_ignored_arguments