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 timestamp consisting of both date & time in your filename, such as
mydata-2022-09-02_00-31-50-613015.csv
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
outfile.write("test")
Without using UliEngineering
You can use this simplified version which does not support fractional seconds and will generate filenames like
data-2022-09-02_00-31-50.csv
Source code (simple version - the UliEngineering version is more robust and supports more features):
from datetime import datetime
def generate_datetime_filename(label="data", extension="csv", dt=None):
if dt is None:
dt = datetime.now()
return f"{label}-{dt.year}-{dt.month:02d}-{dt.day:02d}_{dt.hour:02d}-{dt.minute:02d}-{dt.second:02d}.{extension}"