diff --git a/thefuck/rules/dirty_untar.py b/thefuck/rules/dirty_untar.py index efbf1e32..25d02a64 100644 --- a/thefuck/rules/dirty_untar.py +++ b/thefuck/rules/dirty_untar.py @@ -19,7 +19,6 @@ def _is_tar_extract(cmd): def _tar_file(cmd): - for c in cmd: for ext in tar_extensions: if c.endswith(ext): diff --git a/thefuck/rules/dirty_unzip.py b/thefuck/rules/dirty_unzip.py index 3e45ea37..8423a5ae 100644 --- a/thefuck/rules/dirty_unzip.py +++ b/thefuck/rules/dirty_unzip.py @@ -5,8 +5,11 @@ from thefuck.shells import quote def _is_bad_zip(file): - with zipfile.ZipFile(file, 'r') as archive: - return len(archive.namelist()) > 1 + try: + with zipfile.ZipFile(file, 'r') as archive: + return len(archive.namelist()) > 1 + except: + return False def _zip_file(command): @@ -24,8 +27,14 @@ def _zip_file(command): @for_app('unzip') def match(command): - return ('-d' not in command.script - and _is_bad_zip(_zip_file(command))) + if '-d' in command.script: + return False + + zip_file = _zip_file(command) + if zip_file: + return _is_bad_zip(zip_file) + else: + return False def get_new_command(command):