How to generate filename with date & time in Python

When storing real-time data from a Python script, it is often helpful to have a date & time in your filename, such as


With this specific syntax we avoid special characters which are an issue on Windows operating systems, and we provide a lexically sortable filename

In Python you can do that using UliEngineering.Utils.generate_datetime_filename() from the UliEngineering library.

First, install the UliEngineering library using

pip install UliEngineering

Now you can generate your filename using

from UliEngineering.Utils.Date import *

filename = generate_datetime_filename()
# example: filename == 'data-2022-09-02_03-02-00-045587.csv'

or you can just open the file using with open():

with open(generate_datetime_filename(), "w") as outfile:
    # Example of what you can do with outfile

Without using UliEngineering

You can use this simplified version which does not support fractional seconds and will generate filenames like


Source code:

from datetime import datetime

def generate_datetime_filename(label="data", extension="csv", dt=None):
    if dt is None:
        dt =
    return f"{label}-{dt.year}-{dt.month:02d}-{}_{dt.hour:02d}-{dt.minute:02d}-{dt.second:02d}.{extension}"