def decrypt_dir(self,<EOL>path,<EOL>output_path=None,<EOL>overwrite=False,<EOL>stream=True,<EOL>enable_verbose=True):
path, output_path = files.process_dst_overwrite_args(<EOL>src=path, dst=output_path, overwrite=overwrite,<EOL>src_to_dst_func=files.get_decrpyted_path,<EOL>)<EOL>self._show("<STR_LIT>" % path,<EOL>enable_verbose=enable_verbose)<EOL>st = time.clock()<EOL>for current_dir, _, file_list in os.walk(path):<EOL><INDENT>new_dir = current_dir.replace(path, output_path)<EOL>if not os.path.exists(new_dir):  <EOL><INDENT>os.mkdir(new_dir)<EOL><DEDENT>for basename in file_list:<EOL><INDENT>old_path = os.path.join(current_dir, basename)<EOL>new_path = os.path.join(new_dir, basename)<EOL>self.decrypt_file(old_path, new_path,<EOL>overwrite=overwrite,<EOL>stream=stream,<EOL>enable_verbose=enable_verbose)<EOL><DEDENT><DEDENT>self._show("<STR_LIT>" % (time.clock() - st,),<EOL>enable_verbose=enable_verbose)<EOL>return output_path<EOL>
Decrypt everything in a directory.

:param path: path of the dir you need to decrypt
:param output_path: decrypted dir output path
:param overwrite: if True, then silently overwrite output file if exists
:param stream: if it is a very big file, stream mode can avoid using
  too much memory
:param enable_verbose: boolean, trigger on/off the help information