Spaces:
Build error
Build error
| import os | |
| import zipfile | |
| from typing import Optional | |
| def extract_zip_file(zip_file_path: str, destination_folder: str) -> None: | |
| """ | |
| Extract a zip file to a destination folder. | |
| If destination folder already exists, extraction is skipped. | |
| Args: | |
| zip_file_path (str): Path to the zip file | |
| destination_folder (str): Path to the destination folder | |
| Raises: | |
| FileNotFoundError: If the zip file doesn't exist | |
| """ | |
| # Check if destination folder already exists | |
| if os.path.exists(destination_folder): | |
| print(f"Destination folder {destination_folder} already exists. Skipping extraction.") | |
| return | |
| # Check if zip file exists | |
| if not os.path.exists(zip_file_path): | |
| raise FileNotFoundError(f"Zip file not found: {zip_file_path}") | |
| # Create destination folder | |
| os.makedirs(destination_folder, exist_ok=True) | |
| # Extract the zip file | |
| with zipfile.ZipFile(zip_file_path, 'r') as zip_ref: | |
| for member in zip_ref.infolist(): | |
| # Handle non-ASCII filenames | |
| filename = member.filename.encode('cp437').decode('utf-8') | |
| extracted_path = os.path.join(destination_folder, filename) | |
| # Create directories if needed | |
| os.makedirs(os.path.dirname(extracted_path), exist_ok=True) | |
| # Extract file | |
| if not filename.endswith('/'): # Skip directories | |
| with zip_ref.open(member) as source, open(extracted_path, 'wb') as target: | |
| target.write(source.read()) | |
| print(f"Successfully extracted {zip_file_path} to {destination_folder}") | |
| def ensure_directory_exists(directory_path: str) -> None: | |
| """ | |
| Ensure that a directory exists, create it if it doesn't. | |
| Args: | |
| directory_path (str): Path to the directory | |
| """ | |
| os.makedirs(directory_path, exist_ok=True) | |
| def get_file_extension(filename: str) -> Optional[str]: | |
| """ | |
| Get the extension of a file. | |
| Args: | |
| filename (str): Name of the file | |
| Returns: | |
| Optional[str]: The file extension without the dot, or None if no extension | |
| """ | |
| split = os.path.splitext(filename) | |
| if len(split) > 1: | |
| return split[1][1:] # Remove the dot | |
| return None |