from tkinter.filedialog import askopenfilename , asksaveasfilename , askdirectory from tkinter.messagebox import showinfo from zipfile import ZipFile from os import walk , path from io import BytesIO def get_all_file_paths(directory): file_paths = [] for root, directories, files in walk(directory): for filename in files: file_paths.append(path.join(root, filename)) return file_paths def folder_to_zip_file_bytes(folder_path): zip_file_bytes = BytesIO() with ZipFile(zip_file_bytes, "w") as zip_file: for file_path in get_all_file_paths(folder_path): zip_file.write(file_path, file_path.split("/")[-1]) return zip_file_bytes.getvalue() def combine_files(main:str, bindfolder:str): extension = main.split(".")[-1] open(asksaveasfilename(filetypes=[("HIDDEN FILE",[f"*.{extension}"])],initialfile=f"hidden.{extension}"), 'wb').write(open(main, 'rb').read()+folder_to_zip_file_bytes(bindfolder)) showinfo("HIDDEN FILE","You can use this tool to hide folders inside a file.") combine_files(askopenfilename(),askdirectory())