Fixes Path_utils

This commit is contained in:
Jeremy Hummel 2019-08-15 17:49:55 -07:00
commit 2491c1beb8
2 changed files with 47 additions and 23 deletions

View file

@ -1,18 +1,21 @@
from operator import attrgetter
from pathlib import Path
from os import scandir
image_extensions = [".jpg", ".jpeg", ".png", ".tif", ".tiff"]
def get_image_paths(dir_path, image_extensions=image_extensions):
dir_path = Path (dir_path)
dir_path = Path(dir_path)
result = []
if dir_path.exists():
for x in list(scandir(str(dir_path))):
for x in scandir(str(dir_path)):
if any([x.name.lower().endswith(ext) for ext in image_extensions]):
result.append(x.path)
return sorted(result)
def get_image_unique_filestem_paths(dir_path, verbose_print_func=None):
result = get_image_paths(dir_path)
result_dup = set()
@ -22,46 +25,50 @@ def get_image_unique_filestem_paths(dir_path, verbose_print_func=None):
if f_stem in result_dup:
result.remove(f)
if verbose_print_func is not None:
verbose_print_func ("Duplicate filenames are not allowed, skipping: %s" % Path(f).name )
verbose_print_func("Duplicate filenames are not allowed, skipping: %s" % Path(f).name)
continue
result_dup.add(f_stem)
return sorted(result)
def get_file_paths(dir_path):
dir_path = Path (dir_path)
dir_path = Path(dir_path)
result = []
if dir_path.exists():
return [ x.path for x in list(scandir(str(dir_path))) if x.is_file() ]
return [x.path for x in scandir(str(dir_path)) if x.is_file()]
return sorted(result)
def get_all_dir_names (dir_path):
dir_path = Path (dir_path)
def get_all_dir_names(dir_path):
dir_path = Path(dir_path)
result = []
if dir_path.exists():
return [ x.name for x in list(scandir(str(dir_path))) if x.is_dir() ]
return [x.name for x in scandir(str(dir_path)) if x.is_dir()]
return sorted(result)
def get_all_dir_names_startswith (dir_path, startswith):
dir_path = Path (dir_path)
def get_all_dir_names_startswith(dir_path, startswith):
dir_path = Path(dir_path)
startswith = startswith.lower()
result = []
if dir_path.exists():
for x in list(scandir(str(dir_path))):
for x in scandir(str(dir_path)):
if x.name.lower().startswith(startswith):
result.append ( x.name[len(startswith):] )
result.append(x.name[len(startswith):])
return sorted(result)
def get_first_file_by_stem (dir_path, stem, exts=None):
dir_path = Path (dir_path)
def get_first_file_by_stem(dir_path, stem, exts=None):
dir_path = Path(dir_path)
stem = stem.lower()
if dir_path.exists():
for x in sorted(list(scandir(str(dir_path)))):
for x in sorted(scandir(str(dir_path)), key=attrgetter('name')):
if not x.is_file():
continue
xp = Path(x.path)
@ -70,13 +77,15 @@ def get_first_file_by_stem (dir_path, stem, exts=None):
return None
def move_all_files (src_dir_path, dst_dir_path):
def move_all_files(src_dir_path, dst_dir_path):
paths = get_file_paths(src_dir_path)
for p in paths:
p = Path(p)
p.rename ( Path(dst_dir_path) / p.name )
def delete_all_files (dir_path):
p.rename(Path(dst_dir_path) / p.name)
def delete_all_files(dir_path):
paths = get_file_paths(dir_path)
for p in paths:
p = Path(p)

15
utils/test/Path_utils.py Normal file
View file

@ -0,0 +1,15 @@
import unittest
from utils.Path_utils import get_first_file_by_stem
class PathUtilsTests(unittest.TestCase):
def test_get_first_file_by_stem(self):
first_file = get_first_file_by_stem('../..', 'README')
self.assertEqual(first_file.stem, 'README')
self.assertEqual(first_file.suffix, '.md')
self.assertEqual(first_file.name, 'README.md')
if __name__ == '__main__':
unittest.main()