Skip to content

Instantly share code, notes, and snippets.

@michaelaye
Last active December 19, 2015 08:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save michaelaye/5925716 to your computer and use it in GitHub Desktop.
Save michaelaye/5925716 to your computer and use it in GitHub Desktop.
little class to manage my filename needs to manage data-files that start with a timestr. Pretty handy to have something like this
import os
from datetime import datetime as dt
class FileName(object):
"""Managing class for file name attributes """
def __init__(self, fname):
super(FileName, self).__init__()
self.basename = os.path.basename(fname)
self.dirname = os.path.dirname(fname)
self.timestr= self.basename.split('_')[0]
# save everything after the first '_' as rest
self.rest = self.basename[self.basename.find('_'):]
# split of the time elements
self.year = self.timestr[:4]
self.month = self.timestr[4:6]
self.day = self.timestr[6:8]
# if timestr is not long enough, self.hour will be empty string ''
self.hour = self.timestr[8:10]
# set time member
self.set_time()
def set_time(self):
if len(self.timestr) == 8:
format = '%Y%m%d'
elif len(self.timestr) == 10:
format = "%Y%m%d%H"
else:
format = '%Y%m%d%H%M'
self.time = dt.strptime(self.timestr, format)
self.format = format
def get_previous_hour(self):
return self.time - timedelta(hours=1)
def set_previous_hour(self):
newtime = self.get_previous_hour()
self.time = newtime
self.timestr = newtime.strftime(self.format)
return self.fname
def get_next_hour(self):
return self.time + timedelta(hours=1)
def set_next_hour(self):
newtime = self.get_next_hour()
self.time = newtime
self.timestr = newtime.strftime(self.format)
return self.fname
@property
def fname(self):
return os.path.join(self.dirname, self.timestr + self.rest)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment