Source code for torchoutil.entries

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import logging
import sys
from argparse import ArgumentParser
from pathlib import Path
from typing import Iterable, Union

from torchoutil.pyoutil.argparse import str_to_bool
from torchoutil.pyoutil.os import safe_rmdir, tree_iter
from torchoutil.pyoutil.re import PatternLike

pylog = logging.getLogger(__name__)





[docs]def main_tree() -> None: parser = ArgumentParser() parser.add_argument( "root", type=str, help="Root directory path.", default=".", nargs="?", # for optional positional argument ) parser.add_argument( "--exclude", type=str, help="Exclude file patterns.", default=(), nargs="*", ) parser.add_argument( "--max_depth", type=int, help="Max directory tree depth.", default=sys.maxsize, ) parser.add_argument( "--followlinks", type=str_to_bool, help="Indicates whether or not symbolic links shound be followed. defaults to True.", default=True, ) args = parser.parse_args() print_tree( root=args.root, exclude=args.exclude, max_depth=args.max_depth, followlinks=args.followlinks, )
[docs]def main_safe_rmdir() -> None: parser = ArgumentParser() parser.add_argument( "root", type=str, help="Root directory path.", ) parser.add_argument( "--rm_root", type=str_to_bool, default=True, help="If True, remove the root directory too if it is empty at the end. defaults to True.", ) parser.add_argument( "--error_on_non_empty_dir", type=str_to_bool, default=True, help="If True, raises a RuntimeError if a subdirectory contains at least 1 file. Otherwise it will ignore non-empty directories. defaults to True.", ) parser.add_argument( "--followlinks", type=str_to_bool, default=False, help="Indicates whether or not symbolic links shound be followed. defaults to False.", ) parser.add_argument( "--dry_run", type=str_to_bool, default=False, help="If True, does not remove any directory and just output the list of directories which could be deleted. defaults to False.", ) parser.add_argument( "--verbose", type=int, default=0, help="Verbose level. defaults to 0.", ) args = parser.parse_args() print_safe_rmdir( root=args.root, rm_root=args.rm_root, error_on_non_empty_dir=args.error_on_non_empty_dir, followlinks=args.followlinks, dry_run=args.dry_run, verbose=args.verbose, )