V-MAGE-EVAL-DEMO / utils /file_utils.py
Fengx1n's picture
first commit
504b2e4
import glob
import os
import shutil
import imageio
def assemble_project_path(path):
"""Assemble a path relative to the project root directory"""
if not os.path.isabs(path):
path = os.path.join(get_project_root(), path)
return path
def gen_relative_project_path(path):
root = get_project_root()
if root not in path:
raise ValueError('Path to convert should be within the project root.')
path = path.replace(root, '.').replace('.\\', '')
return path
def exists_in_project_path(path):
return os.path.exists(assemble_project_path(path))
def get_project_root():
path = os.path.dirname(os.path.abspath(__file__))
path = os.path.dirname(path) # get to parent, outside of project code path"
return path
def read_resource_file(path):
assert "./res/" in path, 'Path should include ./res/'
with open(assemble_project_path(path), "r", encoding="utf-8") as fd:
return fd.read()
def get_latest_directories_in_path(path, count = 1):
# Get a list of all directories in the given path
directories = glob.glob(os.path.join(path, '*/'))
# Find the latest directory based on modification time
if directories:
#return max(directories, key=os.path.getmtime)
return sorted(directories, key=os.path.getmtime, reverse=True)[:count]
else:
return None
def copy_file(source_file: str, destination_file: str):
if not os.path.exists(os.path.dirname(destination_file)):
raise FileNotFoundError(f"Destination directory does not exist: {os.path.dirname(destination_file)}")
if not os.path.exists(destination_file):
shutil.copy2(source_file, destination_file)
def get_all_files(directory):
file_list = []
for root, dirs, files in os.walk(directory):
for file in files:
file_path = os.path.join(root, file)
file_list.append(file_path)
return file_list
def run_path_construct(work_dir, *args):
path = work_dir
for item in args:
path = os.path.join(path, str(item))
return path
def img_to_gif(image_lst, gif_filepath):
frames = []
for file in image_lst:
frames.append(imageio.imread(file))
imageio.mimsave(gif_filepath, frames, 'GIF', duration=0.5, loop=0)