Spaces:
Build error
Build error
import os | |
import subprocess | |
import glob | |
from utils.commons.multiprocess_utils import multiprocess_run_tqdm | |
def link_file(from_file, to_file): | |
subprocess.check_call( | |
f'ln -s "`realpath --relative-to="{os.path.dirname(to_file)}" "{from_file}"`" "{to_file}"', shell=True) | |
def move_file(from_file, to_file): | |
subprocess.check_call(f'mv "{from_file}" "{to_file}"', shell=True) | |
def copy_file(from_file, to_file): | |
subprocess.check_call(f'cp -r "{from_file}" "{to_file}"', shell=True) | |
def remove_file(*fns): | |
for f in fns: | |
subprocess.check_call(f'rm -rf "{f}"', shell=True) | |
def glob_job(d, f): | |
pattern = os.path.join(d, f) | |
return glob.glob(pattern) | |
def multiprocess_glob(pattern, num_workers=None): | |
split_pattern = pattern.split("/") | |
recursive_depth = 0 # number of recursive depth | |
for split in split_pattern: | |
if '*' in split: | |
recursive_depth += 1 | |
if recursive_depth == 1: | |
return glob.glob(pattern) | |
else: | |
dirs = glob.glob('/'.join(split_pattern[:-1])) | |
ret = [] | |
args = [(d, split_pattern[-1]) for d in dirs] | |
for (i,res) in multiprocess_run_tqdm(glob_job, args=args, desc=f"globing {pattern}", num_workers=num_workers): | |
ret += res | |
return ret |