Source code for api.file

import os
import shutil
import uuid

import click

# from werkzeug.utils import secure_filename


[docs]def tryrmcache(dir_name, verbose=False): """ removes all __pycache__ starting from directory dir_name all the way to leaf directory Args: dir_name(string) : path from where to start removing pycache """ # directory_list = list() is_removed = False for root, dirs, _ in os.walk(dir_name, topdown=False): for name in dirs: # directory_list.append(os.path.join(root, name)) if name == "__pycache__": shutil.rmtree(os.path.join(root, name)) is_removed = True if verbose: if is_removed: click.echo("[x] __pycache__ successfully deleted") else: click.echo("[ ] __pycache__ doesn't exist", err=True) return is_removed
[docs]def tryrmfile(path, verbose=False): """ tries to remove file path and output message to stdin or stderr. Path must point to a file Args: path (string): path of the file to remove Returns: bool: returns true upon successful removal false otherwise """ try: os.remove(path) if verbose: click.echo(f"[x] file '{path}' successfully deleted") return True except OSError as e: if verbose: click.echo( f"[ ] unable to delete {e.filename}: {e.strerror}", err=True, ) return False
[docs]def tryrmtree(path, verbose=False): """ Tries to removes an entire directory tree. Path must point to a directory. Outputs message to stdin or stderr Args: path (string): directory path to be removed Returns: bool: returns true upon successful return false otherwise """ try: shutil.rmtree(path) if verbose: click.echo(f"[x] folder '{path}' successfully deleted") return True except OSError as e: if verbose: click.echo( f"[ ] unable to delete {e.filename}: {e.strerror}", err=True, ) return False
[docs]def trycopytree(source, dest, verbose=False): """ Recursive copy of folder Parameters ---------- source: str source folder path dest: str destination folder path Returns ------- None """ try: shutil.copytree(source, dest) if verbose: print(f"[x] done copying {source} to {dest}") except Exception as e: print(f"[ ] unable to copy directory tree. {e}")
[docs]def trycopy(source, dest, verbose=False): """ Non-ecursive copy of folder Parameters ---------- source: str source folder path dest: str destination folder path Returns ------- None """ try: shutil.copy(source, dest) if verbose: print(f"[x] done copying {source} to {dest}") except Exception as e: print(f"[ ] unable to copy file. {e}")
[docs]def trymkdir(path, verbose=False): """ Creates dir at destination Parameters ---------- path: str path with folder already in Returns ------- None """ try: os.mkdir(path) if verbose: print(f"[x] Successfully created dir {path}") except Exception as e: print(f"[ ] unable to make directory. {e}")
[docs]def trymkfile(path, content, verbose=False): """ Creates file Parameters ---------- path: str path to create file with filename included content: str file content Returns ------- None """ try: with open(path, "w+") as f: f.write(content) if verbose: click.echo(f"[x] file {path} created with content: ") click.echo(content) except Exception as e: click.echo(f"[ ] {e}")
[docs]def absdiroffile(filepath): """ Gives absolute directory of file, normally expects __file__ as param Parameters ---------- filepath: str path of file Returns ------- str Absolute dir path of file """ return os.path.dirname(os.path.abspath(filepath))
[docs]def get_folders(path): dirs = [d for d in os.listdir(path) if os.path.isdir(os.path.join(path, d))] return dirs
[docs]def unique_filename(fname): prepended = str(uuid.uuid4()).replace("-", "_")[:10] return f"{prepended}_{fname}"
[docs]def path_exists(path): return os.path.exists(path)
[docs]def last_part_of_path(path): return os.path.basename(os.path.normpath(path))
[docs]def delete_file(path): os.remove(path)
# def unique_sec_filename(filename): # return unique_filename(secure_filename(filename))