from __future__ import annotations from datetime import datetime def generate_datetime_filename( prefix: str, suffix: str, datetime_format: str | None = None ) -> str: """Generate a filename which includes the current date and time. Useful for ensuring a degree of uniqueness when saving files. Args: prefix: Prefix to attach to the start of the filename, before the timestamp string. suffix: Suffix to attach to the end of the filename, after the timestamp string. This should include the file extension. datetime_format: The format of the datetime to include in the filename. If None, the ISO format will be used. """ if datetime_format is None: dt = datetime.now().isoformat() else: dt = datetime.now().strftime(datetime_format) file_name_stem = f"{prefix} {dt}" for reserved in ' <>:"/\\|?*.': file_name_stem = file_name_stem.replace(reserved, "_") return file_name_stem + suffix