29 lines
1002 B
Python
29 lines
1002 B
Python
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
|