diff --git a/functions/get_files_info.py b/functions/get_files_info.py new file mode 100644 index 0000000..6c64c2a --- /dev/null +++ b/functions/get_files_info.py @@ -0,0 +1,20 @@ +import os + +def get_files_info(working_directory, directory="."): + abs_path = os.path.abspath(working_directory) + target_dir = os.path.normpath(os.path.join(abs_path, directory)) + # Will be True or False + valid_target_dir = os.path.commonpath([abs_path, target_dir]) == abs_path + if not valid_target_dir: + return f'Error: Cannot list "{directory}" as it is outside the permitted working directory' + if type(directory) is not str: + return f'Error: "{directory}" is not a directory' + + try: + dir_list = os.listdir(target_dir) + dir_string = "" + for item in dir_list: + dir_string += f"- {item}: file_size={os.path.getsize(f"{target_dir}/{item}")}, is_dir={os.path.isdir(f"{target_dir}/{item}")}\n" + return dir_string + except Exception as e: + return f"Error: encountered during loop over dir_list: {e}" \ No newline at end of file diff --git a/test_get_files_info.py b/test_get_files_info.py new file mode 100644 index 0000000..ea52714 --- /dev/null +++ b/test_get_files_info.py @@ -0,0 +1,8 @@ +from functions.get_files_info import get_files_info + + +result = "Result for current directory:\n" +print(f"{result}{get_files_info("calculator", ".")}") +print(f"{result}{get_files_info("calculator", "pkg")}") +print(f"{result}{get_files_info("calculator", "/bin")}") +print(f"{result}{get_files_info("calculator", "../")}") \ No newline at end of file