code: def encrypt_dir(self,
                      path,
                      output_path=None,
                      overwrite=False,
                      stream=True,
                      enable_verbose=True):
          
          path, output_path = files.process_dst_overwrite_args(
              src=path, dst=output_path, overwrite=overwrite,
              src_to_dst_func=files.get_encrpyted_path,
          )
  
          self._show("--- Encrypt directory '%s' ---" % path,
                     enable_verbose=enable_verbose)
          st = time.clock()
          for current_dir, _, file_list in os.walk(path):
              new_dir = current_dir.replace(path, output_path)
              if not os.path.exists(new_dir):  # pragma: no cover
                  os.mkdir(new_dir)
              for basename in file_list:
                  old_path = os.path.join(current_dir, basename)
                  new_path = os.path.join(new_dir, basename)
                  self.encrypt_file(old_path, new_path,
                                    overwrite=overwrite,
                                    stream=stream,
                                    enable_verbose=enable_verbose)
          self._show("Complete! Elapse %.6f seconds" % (time.clock() - st,),
                     enable_verbose=enable_verbose)
          return output_path
docs: Encrypt everything in a directory.
  
          :param path: path of the dir you need to encrypt
          :param output_path: encrypted 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